c 语言里int类型的范围为什么不是从(-2^16)+1~(2^15)-1

2025-04-01 19:59:44
推荐回答(5个)
回答1:

这样来说 就拿 4位打比方 位数少 好打比喻..
(我只是解释问题,并不代表程序中就是这样表示)
0000=0

1111=15

表示 2的4次方个数 也就是16个 由于有个0 数值就表现为

0-15 最大的数也就是2的4次方减1

各位别说那么专业.. 我看楼主搞不明白 .. 才这样解释的

往专业的说就是

1位 可以表示两种状态..

4位 就表示16种状态..

程序中 无符号数 就是0-15了 不可能再有别的

有符号 也是表示 16种状态

第一位符号位.. 正1 负0(打比方) 其他三位就是有效数字了..

牵扯到 补码问题.. 说太多 怕楼主迷糊.. 按我的记就行了
另外,虚机团上产品团购,超级便宜

回答2:

即-2^15~(2^15-1)

回答3:

主要是因为有负零和正零,也就说有两个零,选择负零的补码表示--2^16

回答4:

负数是补码表示;1111111111111111== -1
最小负数1000000000000001对应 = - (0111111111111111)

回答5:

。。看编译器的。。看平台的。。。