一补码与二补码
补码用于数字计算机中,以简化减法运算和逻辑运算。对于二进制(基数-2)系统,有两种补码:一补码和二补码。
二进制数的一补码
将二进制数转换为一补码有一个简单的算法。要获得二进制数的一补码,只需反转给定数字。
二进制数的二补码
将二进制数转换为二补码有一个简单的算法。要获得二进制数的二补码,只需反转给定数字,然后在结果的最低有效位 (LSB) 加 1。
一补码和二补码的区别
这些区别如下所示:
一补码 | 二补码 |
---|---|
要获得二进制数的一补码,只需反转给定数字。 | 要获得二进制数的二补码,只需反转给定数字,然后在结果的最低有效位 (LSB) 加 1。 |
二进制数 110010 的一补码是 001101 | 二进制数 110010 的二补码是 001110 |
简单的实现,每个输入位只使用非门。 | 每个输入位使用非门和全加器。 |
可用于有符号二进制数表示,但不适合作为 0 的模糊表示。 | 可用于有符号二进制数表示,最适合作为所有数字的明确表示。 |
0 有两种不同的表示,一个是 -0(例如,在五位寄存器中为 1 1111),另一个是 +0(例如,在五位寄存器中为 0 0000)。 | 0 只有一个表示,用于 -0 和 +0(例如,在五位寄存器中为 0 0000)。零 (0) 始终被认为是正数(符号位为 0)。 |
对于 k 位寄存器,可以存储的最大正数是 (2(k-1)-1),可以存储的最小负数是 -(2(k-1)-1)。 | 对于 k 位寄存器,可以存储的最大正数是 (2(k-1)-1),可以存储的最小负数是 -(2(k-1))。 |
在一补码算术运算中会发生首位进位加法。它加到结果的最低有效位。 | 在二补码算术运算中不会发生首位进位加法。它被忽略。 |
由于需要进行首位进位加法,一补码算术运算并不比二补码更容易。 | 由于不需要进行首位进位加法,二补码算术运算比一补码更容易。 |
符号扩展用于将有符号整数从一种大小转换为另一种大小。 | 符号扩展用于将有符号整数从一种大小转换为另一种大小。 |
广告