1的补码vs 2的补码

1's Complement vs 2's Complement

补码用于数字计算机中,以简化减法运算并进行逻辑运算。对于二进制数(以2为基)的系统,补码有两种类型:1的补码和2的补码。

1的二进制补码:

有一个简单的算法可以将二进制数转换为1的补码。要获得二进制数的1的补码,只需反转给定数字即可。

2的二进制补码:

有一个简单的算法可以将二进制数转换为2的补码。要获得二进制数的2的补码,只需反转给定数字并将1加到给定结果的最低有效位(LSB)。

1的补码和2的补码之间的差异:

这些差异如下所示:

1的补语

2的补码
要获得二进制数的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的补码容易得多。
符号扩展用于将带符号整数从一种尺寸转换为另一种尺寸 符号扩展用于将带符号的整数从一种尺寸转换为另一种尺寸。