一补码与二补码


补码用于数字计算机中,以简化减法运算和逻辑运算。对于二进制(基数-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))。
在一补码算术运算中会发生首位进位加法。它加到结果的最低有效位。
在二补码算术运算中不会发生首位进位加法。它被忽略。
由于需要进行首位进位加法,一补码算术运算并不比二补码更容易。
由于不需要进行首位进位加法,二补码算术运算比一补码更容易。
符号扩展用于将有符号整数从一种大小转换为另一种大小。
符号扩展用于将有符号整数从一种大小转换为另一种大小。

更新于:2020年6月30日

33K+ 次浏览

开启您的职业生涯

完成课程后获得认证

开始学习
广告