书上说,将一个负数的补码转换成真值时,也需要一个“取反加一”的过程,请问这是什么原理?

书上的例题
【11100000】补 = -(00011111+1)=-00100000=-2的五次方=-32

因为负数的补码可以用负数的原码“取反+1”得到,那么由补码求原码就理所当然地应该是“-1取反”了!可是,对于二进制,“-1取反”和“取反+1”效果是一样的(位数限制,溢出不计)。不信?你试试用“-1取反”同样能获得正确的补码——注意符号位不变。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-03-31

由补码,求真值,不需要“取反加一”。

只要做【进 制 转 换】即可。

假如,八位补码是 1110 0000。

首位为 1,既代表负号,也代表数值-128。

其余位之和:64 + 32 = +96。

加在一起,就是真值:-128 + 96 = -32。

--------

若补码是 0110 0000。

首位是 0,这就没有-128 了。

其余位之和,就是真值:64 + 32 = +96。

==================

由真值,求补码,也不需要“取反加一”。

只要从左边,取反几位,至最后的 1,即可。

如:

真值-32 = -010 0000

其补码,是  11 10 0000

看到了吗?

只需写出符号位,再变化一位,就行了。





相似回答