1的补码vs 2的补码

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

1的二进制补码

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

2的二进制补码

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

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

这些差异如下所示-

1的补码
2的补码
要获得二进制数的1的补码,只需反转给定数字即可。
要获得二进制数的2的补码,只需反转给定数字并将1加到给定结果的最低有效位(LSB)。
二进制数110010的1的补码为001101
二进制数110010的2的补码为001110
简单的实现,每个输入位仅使用非门。
对每个输入位使用NOT门和全加法器。
可以用于带符号的二进制数字表示形式,但不适合用作数字0的模糊表示形式。
可用于带符号的二进制数字表示形式,最适合作为所有数字的明确表示形式。
0具有两个不同的表示形式,一个是-0(例如,五位寄存器中的1 1111),第二个是+0(例如,五位寄存器中的0 0000)。
0仅表示-0和+0(例如,五位寄存器中的0 0000)。零始终为正(符号位为0)
对于k位寄存器,可以存储的最大正数为(2 (k-1) -1),可以存储的最小负数为-(2 (k-1) -1)。
对于k位寄存器,可以存储的最大正数为(2 (k-1) -1),可以存储的最小负数为-(2 (k-1))。
1的补码算术运算中会发生“末位携带位” 加法。它添加到结果的最低位。
2的补码算术运算中不会发生末尾携带位 加法。它被忽略。
1的补码算术运算不比2的补码更容易,因为增加了末尾进位位。
2的补码算术运算比1的补码容易得多,这是因为不增加末尾携带位。
符号扩展用于将带符号的整数从一种大小转换为另一种大小。
符号扩展用于将带符号的整数从一种大小转换为另一种大小。