1's Complement vs 2's Complement
补码用于数字计算机中,以简化减法运算并进行逻辑运算。对于二进制数(以2为基)的系统,补码有两种类型:1的补码和2的补码。
1的二进制补码:
有一个简单的算法可以将二进制数转换为1的补码。要获得二进制数的1的补码,只需反转给定数字即可。
2的二进制补码:
有一个简单的算法可以将二进制数转换为2的补码。要获得二进制数的2的补码,只需反转给定数字并将1加到给定结果的最低有效位(LSB)。
1的补码和2的补码之间的差异:
这些差异如下所示:
1的补语 th> | 2的补码 th> |
---|---|
要获得二进制数的1的补码,只需反转给定的数字即可。 | 要获得2的补码二进制数的补码,只需将给定数取反并在给定结果的最低有效位(LSB)上加1。 |
1二进制数的补码110010为001101 | 2的二进制数110010的补码为001110 |
简单的实现,该实现只对每个输入位使用NOT门。 | 沿使用NOT门 |
可用于带符号的二进制数表示,但不适用于数字0的模棱两可的表示。 | 可用于用于带符号的二进制数表示形式,最适合作为所有数字的明确表示形式。 |
0具有两个不同的表示形式,其中一个表示为-0(例如1 1111 i n个五位寄存器),第二个为+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))。 |
end-around-carry-bitaddition发生在1的补码算术运算中。 | end-around-carry-bitaddition在2的补码算术运算中不会发生。 |
1的补码算术运算不易于2的补码,因为增加了末尾进位位。 | 2的补码算术由于不添加末尾携带位,因此运算比1的补码容易得多。 |
符号扩展用于将带符号整数从一种尺寸转换为另一种尺寸 | 符号扩展用于将带符号的整数从一种尺寸转换为另一种尺寸。 |