日期:2014-05-20  浏览次数:20719 次

补码的问题
课本上的描述:
对于负数的补码,求其真值时候,将符号位以外的有效值按位求反后,在末位加1,就可以得到该负数补码对应的真值

我现在给定 [X]补码=(10000000)2

  X = -([0000000]求反 +1)2
  = -([1111111]+1)2
  =-(10000000)2
  =(-128)10
因此[X]补码=(10000000)2

的真值是-128 请问,我这样做,对吗?




------解决方案--------------------
我的记忆是

连同符号位(事实上,如果用补码表示,符号位根本没有必要提出,只是恰好负数的最高位为1而已)
一起取反,然后+1

10000000补 = 01111111 + 1 = 10000000

所以10000000为-128
------解决方案--------------------
正数的真值的补码与真值是一样的
负数:先末位减1然后把所有位求反,再在前面加负号就可以了
------解决方案--------------------
1.若要得到一个负二进制数的绝对值(称为真值),只要各位(包括符号位)取反,再加1,就得到真值。   如:[X]补码:1000 0000   各位取反:0111 1111   加1:10000000(真值)
2.真值为128,负数则为-128

个人意见,仅供参考
------解决方案--------------------
http://zhidao.baidu.com/question/308750116.html
百度的一个说法:
10000000这个补码表示的哪个数的补码呢? 
其实这是一个规定,这个数表示的是-128