计算机,用补码的方式,保持数据。
正数的补码就是本身。负数的补码是除符号位之外,取反,再加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