C语言中 int为4字节,32bit
其机器码第一位为符号位,余下31位表示数字
表示范围:-2^31 (-2147483648) ~ 2^31-1 (2147483647)
下面来看一下:
最大值2147483647(机器码: 0 111…1)
再加一就变成了最小的整数-2147483648(1 00…0)——特殊值,记住就行了
如果再加一则为1 00…1,减一取反后为1 11…1即为-2147483647
(减一取反是为了通过补码求真值)
(负数的真值转化成补码:取反加一,符号位不用取反,仍然表示符号)
补
码
减
一
取
反
之
后
是
原
码
,
而
原
码
的
数
位
规
则
:
第
一
位
是
符
号
位
,
直
接
表
示
符
号
,
其
余
为
数
值
位
\color{red}{补码减一取反之后是原码,而原码的数位规则:第一位是符号位,直接表示符号,其余为数值位}
补码减一取反之后是原码,而原码的数位规则:第一位是符号位,直接表示符号,其余为数值位