【c++】int在内存中的存储形式:补码

一、取值范围

类型名称 占字节数 取值范围
int 4B ( − 2 31 ) (-2^{31}) (231) ~ ( 2 31 − 1 ) (2^{31}-1) (2311)
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个字节)

三、反码的意义

【c++】int在内存中的存储形式:补码

可以看出,若不取补码,7的二进制与-7的二进制相加并不为0,只有当其均取补码时,正反数相加才得0。