C语言 整型变量

来源:百度知道 编辑:UC知道 时间:2024/05/11 18:22:46
一个int的范围为 -2的15次方 至 2的15次方减1
1.为什么要减1
2.按说不应该只有14次方吗 因为第一位是符号位啊

C语言中int型是以补码的形式存在的。
正数是其自身,0~0111 1111 1111 1111=0~32767
负数则为其正数的取反+1:
-1 = -0000 0000 0000 0001=1111 1111 1111 1110 +1=1111 1111 1111 1111
最小的负数为:
-32768=-1000 0000 0000 0000 = 0111 1111 1111 1111 +1 =1000 0000 0000 0000
以补数形式表示,可以将减法和加法协调统一。

5+(-1)= 0000 0000 0000 0101 + 1111 1111 1111 1111 1111
= 1 0000 0000 0000 0100=4
最高位溢出

记得应该是2的16此方吧
一共有16位
正数到0111 1111 1111 1111
前面一位就是符号位,少一位变成2的16次方减1。
加上1变成1000 0000 0000 0000 负数了。