int为什么不是2的32次方

关于int(4字节)的取值范围由来(-2^31~2^31-1)?
1.【32位】一个字节占8位,所以4字节总共是占32位,然后去掉第一位,也即符号位(1:负,0:正),也就剩下31位!

2.【最大值:2^31-1】为什么不是2^31?

(1)假设只有三位,其中首位为符号位的话,最大值的情况不就是011吗?也即表示3.
3 = 2^(3-1)-1.

(2)32位的时候同理,01111111 11111111 11111111 11111111 //而这个数表示的值就是2^31-1.
2^31-1 = 2^(32-1)-1.

3.【最小值:-2^31】为什么不是-(2^31-1)?

(1)因为数据是由二进制补码存储的:
1)当原码为正数的时候,正数的原码反码补码都相同,即00011的反码也为00011,补码也为00011.
2)当原码为负数的时候,反码即按位取反,比如10011为原码,10011可表示-3,那么符号位不变,其余位按位取反即反码11100.那么10011的补码便是11101.

(2)所以可知int所取的最小值原码为:11111111 11111111 11111111 11111111.
它的反码为:10000000 00000000 00000000 00000000. (在原码中表示-0.)
它的补码为:10000000 00000000 00000000 00000001. (在原码中表示-1.)
依次可以类推-2,-3,-4......-2^31!
【推到-2^31】
其原码为10000000 00000000 00000000 00000001 
其反码为11111111 11111111 11111111 11111110
其补码为11111111 11111111 11111111 11111111
从上可知最小值只能表示到-2^31,而无法表示到更小的一位:-2^31-1!


4.【综上所诉,int(4字节)范围是:-2^31~2^31-1】!
  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值