我纠正一下层主的意思:-128到127.共256个数。刚好可以用一个字节(8位)表示出来(2^8=256);
其实,1111 1111表示的是-1,而不是-128;
首先,因为要表示出负数,所以它的最高位是符号位。0表示正数,1表示负数;如:
127是0111 1111这样表示的。
-128是1000 0000这样表示的。
127后面是-128,最大的正数加下来是最小的负数。这就跟钟表一样,12点钟后面是1点中钟一样。
因为它是用补码的编码方式。(下面的看不懂可以直接跳过,或者百度了解之后再看)
正数的补码就是它的原码,也就是单纯的二进制数。负数的话,看下面例子:
1111 1111这个二进制串,首先它最高位是1,明确他是个负数。
那么其余位是111 1111,按位取反得到:000 0000,再加1就是:000 0001
也就是1,再加上符号位。最终结果是-1 |