二进制补码为负数,求这个负数的绝对值怎么求?
问题描述:
二进制补码为负数,求这个负数的绝对值怎么求?
题目标题为“计算下列用补码表示的二进制数的代数和,如果为负数,求负数的绝对值.”
例如: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。因为题目只要求绝对值,没有求原码,所以偷了下懒,直接求出绝对值了,道理是一样的。