为什么-8的补码用四位二进制人为规定表示为1000?懂得告诉我。。不懂就
为什么-8 的补码用四位二进制人为规定表示为 1000?
用四位补码,可表示 16 个数值。
数值的范围,是:-8 ~ +7。
-8 的补码,并不是人为规定的。
因为,-8 没有四位的原码和反码。
-8 的补码,你用“取反加一”是求不出来的。
所以,你才误解为“人为规定”。
没有原码和反码,补码,怎么求呢?
你往下看:
数值 0,补码就是:0000。
-1 的补码,就是:0000-1 = 1111。
其它的补码,你就慢慢减吧。。。
-8 的补码,就是 1000。
--------------
同样的道理,-128 的八位补码,你也得这么求。
计算机的硬件,只有加法器。
负数、减法,都必须用加法来完成。
你看十进制:
24 - 1 = 23
24 + 99 = (一百) 23
舍弃进位,+99 可以当做-1 进行运算。
+99 就是-1 的补数。
补数(补码),就是一个“代替负数进行运算的正数”。
对于 2 位 10 进制数,求补数的公式:
补数=负数+10^2。
----------------------
计算机中,用二进制,就称为补码。
对于 8 位 2 进制数,求补码的公式:
补码=负数+2^8。
-1 的补码是:-1 + 256 = 255 = 1111 1111。
-2 的补码是:-2 + 256 = 254 = 1111 1110。
。。。
-128 的补码是:128 = 1000 0000。
----------------------
如果四位二进制,-8 的补码,就是:
-8 + 2^4 = 8 = 1000(二进制)。
求补码,不要用“原码取反加一”。
那个方法,是无法求出-8 的补码的。
而且,你也不能理解使用补码的意义。
----------------------
一个是-8不能够用四位二进制数表示,用5位表示补码后应该是11000,而要求用四位表示后得到的就是1000即舍弃了最高位。
实际上这种理解是不对的,我觉得应该得这么理解,计算机是不管你什么取反加一,什么反码补码的,这些都是人为加上去的,实际上补码的存在形式就是“求补”,就像一个所求角a的补角是180-a一样,四位二进制数,当我们确定是有符号数之后,最高位是1表示负数,那么低三位所表示的就是8-(需要补得数的绝对值),所以-8的补码就是1(表示负数)000(8-ABS(8)=0),也就是1000,具体的你也可以看看其他的比如说-4,1100,就是100(8-4=4)这也是一个道理