为什么1个字节的取值范围是-128~127

计算机,用补码的方式,保持数据。

正数的补码就是本身。负数的补码是除符号位之外,取反,再加1.


在编程过程中,经常要考虑取值范围。

在C++中,int8_t 占1个字节,取值范围是-128~127.


那么,为什么是-128~127呢?


由于有符号位的存在,所以负数的值,最低可以到-128.  


负数的2进制计算方法是,除了符号位之外,取反再加1。

所以1000 000 ,除符号位之后,取反得到 1111 1111 ,再加1得到:1000 0000 =  -128    符号位要记得。

而1111 1111 ------取反----->   1000 0000  --------加1--------->  1000 0001 = -1这边符号位还在。


注意一点: -1 比 -128 要大


如下所示。


00000000 => 0
11111111 => -1
10000000 => -128
01111111 => 127



你可能感兴趣的:(笔试面试)