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

时间:2016-01-18 10:41:01

标签: c binary computer-science number-systems

我试图学习二进制数系统,几乎是非常新的。我刚刚完成了关于二进制数字对话,加法,减法等的一些章节和一些基本的事情。

但是现在我看到了关于1&2补码和2补码的章节。我知道什么是有符号数,有符号量和二进制数如何以8位,16位等存储在存储器中。但问题是我无法理解为什么1的补码和2的补码。另外,为什么我们应该使用2&2补充以及为什么它更好等等。

我跟随一本书,它有指导方针转换成1和3的补码。但没有什么可以解释为什么补充和2补充。

所以我需要一些帮助来更深入地理解它。任何关于二进制数系统等的书籍建议都表示赞赏。

先谢谢 罗宾

3 个答案:

答案 0 :(得分:1)

1的补码只是一个按位NOT 门,即1011变为0100。

2的补语是最常用于表示有符号整数的因素,因为它符合加法和减法的规则。如果你加1到1111,你得到0000。因此1111应为-1。

答案 1 :(得分:0)

你可以使用任何系统,但有些人有缺点或专业。

1的补码很容易理解但不提供统一的算术(当你想要根据操作数的符号添加两个数字来区分不同的情况时),因此在硬件中实现它太昂贵了。另一个问题是存在两个0(负一个和一个正)。

2的补码稍微难以理解,但提供了一个非常简单的统一算术,你只需要以相同的方式添加数字(例如)。因此,实施它会导致更便宜/更小的硬件。

答案 2 :(得分:0)

1s补码只是按位NOT(即001变为110),最终会给你两个零(111和000),因此当你执行不同符号的数字添加时需要注意(每当你越过0)。然而,在硬件中实现否定(它是单个并行操作)非常简单。

2s补码调整范围,所以你有一个负数比你有正数(对于8位数,你的范围是-128到127),但你不必考虑任何事情而你只有一个零。取一个数字稍微贵一些(一个并行位翻转,然后是一个加法),但这可能通过更容易的加法电路得到补偿。

符号位只使用最高位来表示负或正。它基本上具有1s补码的所有缺点。否定一个数字(翻转位)

非常简单

还有偏移数字,其中"所有位0和#34;数字实际上意味着"最负数#34;和"只有最高位0和#34;表示"数字为零"。例如,如果您使用数字来控制物理位移(全部为零一直到一端,所有的一直到另一端并且"零&#),这可能会很有吸引力34;在中间)。