-128的二进制补码是怎么得来的?
2022-12-14 · 百度认证:北京惠企网络技术有限公司官方账号
补码10000000唯一的表示-128是一个规定,不需要推算,理由如下:
现在来推-128的补码:
-128的补码:10000000-10000000(+128没有符号位)=10000000
-128的反码:11111111(10000000+1=10000000+11111111=11111111)
-128的原码:10000000(反码取反)
往回推:
-128的原码10000000(-128,进位被舍去)
-128的反码11111111
-128的补码10000000(11111111(反码)+1=10000000,这里实际上真正相加的是11111111后面的7位,第1位是符号位始终不会变,所以,当进到第8位的时候,就表示溢出了,会被舍弃。0只有一个补码00000000,如果是这样,那么10000000就不会表示成-0的补码
即:补码10000000唯一的表示-128,在补码中用(-128)代替了(-0),所以补码的表示范围为:(-128~0~127)共256个.
注意:(-128)也有相对应的原码和反码,它的反码是(11111111)原码仍然是(10000000)(-128)
扩展资料:
负数的补码就是对反码加1,而正数不变,正数的原码反码补码是一样的。
补码的得来:是为了让负数变成能够加的正数,所以,负数的补码=模-负数的绝对值。
比如:-1补码:11111111(00000001,也就是-1的绝对值,取反加1得来)当一个数要减1的时候,可以直接加11111111。
所谓的补码,只不过是个【障眼法】而已。
也不仅是二进制用补码运算,任何进制,都有“补码”的。
你看十进制,两位数是:0 ~ 99。
可以有:27 + 99 = (一百) 26
也可以:27 - 1 = 26
如果你忽略进位,依然保持两位数,那么:
--正数,就能当负数来用;
--加法,也就能完成减法运算。
如果在计算机舍弃进位,会怎样?
--计算机中,就全是正数了。
--负数没有了,减法运算也没有了。
--减法器,也没有了用武之地。
--计算机只需配置一个加法器,便可横行天下!
----------------------
看到了吗?
--只有你舍弃了进位,正数才能代替负数!
--补码,并不是来自取反加一!
【舍弃进位】,才是补码的来源和存在意义。
----------------------
两位十进制时,舍弃进位,就是减去一百 (10^2)。
那么,加上 99,再减去 100,必然就是“-1 ”!
------
八位二进制数则是:0000 0000 ~ 1111 1111。
换算到十进制,即:0 ~ 255。
出现了进位,就是:2^8 = 256。
------
那么,加上 255 (1111 1111),再减 256,不也是-1 吗?
同理:254 (1111 1110),就能代替-2。
。。。
最后:128 (1000 0000),就是代表-128 的。
这些正数,就是计算机专家 “发明” 的补码。
----------------------
其实,补码,不需要发明!
所谓的补码,不过就是小学的知识点。
计算机专家,却弄不明白这个。
于是,就编造了一批垃圾:
--机器数真值原码反码取反加一符号位不变、符号位也参加运算...
谁要是跟老外学算术,立刻、马上,直接就掉到沟里去了!