首先,对于8位二进制中的原码、反码、补码等计算机底层原理网上有很多,大家可以自己去找找,这里就不做赘述了。
以下呢,是我对于8位二进制数中,-128的一些个人理解,希望错误之处请大家指正!
首先,-128是个什么鬼?他是怎么出现的?
-128就是二进制1000 0000(但大家肯定经历过自己的计算得知,计算出来后,结果就是个错误!别急,咱们一步步来),他的出现是因为“+0”和“-0”的关系,因为出现了两个“0”,
+0(十进制)------->0000 0000(二进制原码、反码、补码)
-0(十进制) ------->1000 0000(二进制原码),1111 1111(反码),1111 1111(补码)
所以为了唯一标识且不浪费数据资源,人为规定采用“+0”,而“-0”这个“多余”的0,不能把人家抛弃吧?那就规定作为最小的负数值了,即“-128”。
你也可以计算得出,为什么1000 0000会是-128呢?那么好。现在,咱们转到一开始,计算1000 0000的十进制结果。
原码:1000 0000
反码:1111 1111
补码=反码加一,即:
1111 1111
+
1
———————
(1)0000 0000
此时计算得出1 0000 0000,由于我们知道,符号位不参与运算,那么这个结果显然错的。
那就换一种思路,将符号位 “提取出来”,即:
1000 0000 ----->1 000 0000,
求得反码为:1 111 1111,再计算其补码。
1000 0000 的补码经过计算得知:
1 1000 0000,(注意,最开头的那个1是符号位)
显然,结果为-128.
所以,在8位二进制中,
正数最大值为:0111 1111(原码)=127;最小值为:0000 0001(原码)=1
零:0=0000 0000(原码);
负数最大值为:1111 1111(原码)=-1;最小值为:1000 0000(原码)=-128。
以上呢,就是我自己对于-128的个人理解,由于是第一次写博客,其中的不足与错误之处,希望大家见谅和指正,哈哈,那就到此结束喽!