补码的问题。。跪求大神回答。。
发布网友
发布时间:2022-04-23 19:08
我来回答
共2个回答
热心网友
时间:2023-10-14 07:26
明确一点,补码是种规则而不是负数。规则是:正数用原码表示,负数则用反码加1表示。为什么要有补码呢?你想想,0减1是多少呢?-1。二进制里面,00000000减一,又是多少?11111111。想想-1补码是多少?如此类推,可以看出补码可以非常有效的表示负数,并简化硬件的结构。
那么,你的问题就很简单了。01111111符号位是0,表示是正数,所以补码就是原码,就是01111111了。然后1000000,这个我们可以先看10000001代表多少?反码是减一,就是10000000,求反,得到01111111,就是127了。就是说,补码10000001代表-127,减一是多少?就是-128啦。最后,原码00000000的反码是11111111,加1得到补码,就是00000000。其实就是0=-0啦。
热心网友
时间:2023-10-14 07:26
0111 1111 符号位是0 可以看出来 是正数,正数的原码 补码都是一样的 所以对应的原码还是0111 1111。应该是127 不是1
-128的补码可以用补码加减法算:
【-128】补= 【-127-1】=【-127】补+【-1】补=1000 0001
+ 1111 1111
= 1000 0000
0000 0000 表示的是0的补码 在机器数补码形式中,0的表示形式是唯一的,就是+0的补码和-0的补码是一样的 但是+0的原码是0000 0000,
-0的原码是1000 0000 希望对你有所帮助