1.首先要知道计算机发展到某个阶段后统一用补码二进制进行存储数据,
2.每个源码都必须利用,不得浪费,
知道了这两点,通过分析我们知道范围是11111111 - 01111111,即-127 - 127;没错,就是-127 - 127;
然后,有一点:这里存在两个可表示十进制0的源码:10000000,00000000;即-0,+0;然后发明者规定十进制0直接用00000000这个补码来表示就可以了,那么,一个字节8个位,
这8位按照计数原理得出的所有源码中,都可以一一对应于一个十进制数,唯独10000000这个源码没有利用到,那就浪费了一个编码,大神通过推断,最后找到一个十进制数:
-128,-128的源码被8个位截断后的样子刚好就是:10000000,为何说截断呢,因为-128无法用8个位进行编码(即无法用8个位的编码来表示这个-128,需要拓展为用9个位来可以编码);
之所以用-128这个十进制数,原因是这个-128的源码被8位截断后存放在8位中参与整数的各种计算都不会影响到+-*/定律;所以,发明者就用10000000这个源码来表示-128;
但是我们要知道-128的编码不是10000000;但是计算内部已经定义了这种协议,采用8位的编码中的源码位10000000的话,就转为-128的编码参与计算,实际上就是不转为-128的编码参与计算,10000000本身参与计算也不会影响正常的+-*/;
这里推荐另一篇文章:
http://blog.csdn.net/daiyutage/article/details/8575248