二进制补码为负数,求这个负数的绝对值怎么求?

题目标题为“计算下列用补码表示的二进制数的代数和,如果为负数,求负数的绝对值。”
例如:00110010+10000011,求解。

00110010+10000011=10110101,已经说明这是二进制补码,所以最高位为1的话,是个负数。对其取反加1后得01001011,绝对值为1001011b=75d。也就是说-75d的8位二进制补码是10110101。追问

"对其取反加1后得01001011",是对10110101么?

10110101是个补码,那它的原码应该是11001011啊,怎么是01001011呢?

最后就这个问题来说,我只要求出这个补码的原码,原码转换为10进制数求绝对值,绝对值再转换为原码就是它的绝对值了对么?

追答

对10110101(二进制补码)直接取反加1之后就是绝对值。当然你也可以将符号位和绝对值部分分开来处理:对10110101的低7位取反加1得绝对值1001011。符号位不变就是原码11001011。
因为题目只要求绝对值,没有求原码,所以偷了下懒,直接求出绝对值了,道理是一样的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-07
0011 0010 + 1000 0011 = 1011 0101。
和,是个补码。
求其原码,对数据位取反加 1:1100 1011。
其真值就是:-100 1011 = -75(十进制)
其绝对值是:100 1011 = 75(十进制)
第2个回答  2022-07-28

补码,代表了一个(正负)数值。

你求出这个数值,绝对值,不就知道了吗?

  0011 0010 + 1000 0011 = 1011 0101

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

再加上其他数值位,就是真值:

 -128 + 32 + 16 + 4 + 1 = -75

绝对值,就是:75。

--------------------

如果,补码是:0011 0010,

各位之和,就是真值:

  32 + 16 + 2 = +50

绝对值,就是:50。

相似回答