首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1的补码和2的补码在二进制中的重要性是什么

1的补码和2的补码在二进制中的重要性是什么
EN

Stack Overflow用户
提问于 2016-01-18 18:41:01
回答 3查看 12.9K关注 0票数 1

我正在尝试学习二进制数系统,而且几乎是非常新的。我刚刚完成了一些关于二进制数转换,加法,减法等基本知识的章节。

但是现在我看到了一个关于1的补码和2的补码的章节。我知道什么是有符号数字,有符号大小,以及如何在内存中存储8位,16位等二进制数字,但问题是我不能理解为什么1的补码和2的补码。还有,为什么我们应该使用2的补码,为什么它更好,等等。

我正在遵循一本书,书中有一条将1的补码和2的补码转换的指南。但是没有解释为什么1的补码和2的补码。

所以我需要一些帮助来更深入地理解它。任何关于二进制数系统等的书籍建议都是值得感谢的。

提前感谢罗宾

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-19 17:49:29

1的补码只是简单的按位非(即001变成110),这最终会给你两个0 (111和000),所以当你用不同的符号进行数字的加法时(无论何时你越过0),你都需要小心。然而,在硬件中实现求反非常简单(它是一个单独的并行操作)。

2s补码调整范围,所以你的负数比正数多一个(对于8位数,你的范围是-128到127),但是你不需要考虑任何事情,你只有一个零。对一个数字求反的代价稍高一些(一个并行的位翻转,然后是加法),但这可能会被简单得多的加法电路所补偿。

符号位简单地使用最高位来表示负或正。它基本上具有1补码的所有缺点。对一个数字求反非常简单(翻转比特)

还有偏移量数字,其中“所有位0”数字实际上表示“最负的数字”,“只有最高的位0”表示“数字零”。例如,如果您正在使用数字来控制物理对象的位移(全零一直到一端,全一一直到另一端,而“零”在中间),这可能很吸引人。

票数 0
EN

Stack Overflow用户

发布于 2016-01-18 19:09:53

1的补码只是一个位非门,即1011变成0100。

2的补码是最常用的有符号整数的表示,因为它遵循加法和的规则,subtraction.If你把1加到1111上,得到0000。因此,1111应为-1。

票数 2
EN

Stack Overflow用户

发布于 2016-01-18 19:59:08

你可以使用任何系统,但有些系统有优缺点。

1的补码非常容易理解,但不提供统一的算术(当你想把两个数相加时,你必须根据操作数的符号来区分不同的大小写),所以在硬件上实现它的成本太高了。另一个问题是存在两个0(一个负一个正)。

2的补码稍难理解,但提供了一个非常简单的统一算法,您只需以相同的方式将数字相加,无论数字的符号是什么(例如)。因此,实现它会带来更便宜/更小的硬件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34852691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档