关于int(4字节)的取值范围由来(-2^31~2^31-1)问题
2016-07-04 16:31
429 查看
——关于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】!
(自己对于这个问题也纠结了很久,得出的结论若有不足之处,敬请批评指正,谢谢!)
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】!
(自己对于这个问题也纠结了很久,得出的结论若有不足之处,敬请批评指正,谢谢!)
相关文章推荐
- 复数类的实现
- js获取所选中复选框的值s
- 为什么在tomcat6.0下显示正常的jsp页面在tomcat 7.0里中文全是乱码?怎么样才能解决
- getaccesstoken方法
- (38) 日志运用
- 16.5节练习
- Android使用ViewPager实现左右循环滑动及轮播效果
- C# 获取一个13位的时间戳
- $.ajax()方法详解
- 装饰者设计模式----IO流
- 【IT我们来了】每一个程序员要遵守的一些优秀编程风格~
- Ubuntu下通过ppa安装jdk
- Android出现“Conversion to Dalvik format failed with error 1”的几种情况及解决办法
- Linux Redis副本集安装(redis-3.0.7)
- 互联网版本(支持手机APP)云天售后服务软件上线
- js作用域和作用域链
- postgresql数据库的备份和还原
- mysql 主键自增
- 文章标题
- Android 蓝牙4.0连接几次后出现连接不了,搜索不到服务的情况