【c++】int在内存中的存储形式:补码
一、取值范围
类型名称 | 占字节数 | 取值范围 |
---|---|---|
int | 4B | ( − 2 31 ) (-2^{31}) (−231) ~ ( 2 31 − 1 ) (2^{31}-1) (231−1) |
unsigned int | 4B | 0 0 0 ~ 2 32 2^{32} 232 |
二、原码、反码、补码
正数:原码 = 反码 =补码
十进制 | 原码 | 反码 | 补码 |
---|---|---|---|
+7 | 0000,0111B | 0000,0111B | 0000,0111B |
负数:补码 = 反码 + 1
十进制 | 原码 | 反码 | 补码 |
---|---|---|---|
-7 | 1000,0111B | 1111,1000B | 1111,1001B |
负数的反码是对除符号位的其他位进行取反,补码就是反码+1。
(假设:int占1个字节)
三、反码的意义
可以看出,若不取补码,7的二进制与-7的二进制相加并不为0,只有当其均取补码时,正反数相加才得0。