黑马程序员:JAVA整数数据类型取值范围及为什么是这个范围?

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

整数数据类型包括:byte、short、int、long四种类型,以下分别为各类型取值范围!
byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) 
short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) 
int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) 
long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)

取值根据:
以byte为例
byte占用1个字节,即8个2进制位。
个人起初想法:(此想法是错的)
最大值:01111111(二进制) 127(十进制)
最小值:11111111(二进制) 按二进制转化为十进制算法结果为255(计算器选择字符、双字节、四字节的结果也是如此) 而使用计算器十进制(字节)的结果为-1。

这是为什么呢?(通过个人的错误想法找到原因,并真正理解到底是如何得出byte类型的取值范围)

首先说明为什么二进制1111 1111使用计算器字节模式得出的十进制结果为-1。
原因:1个字节为8个二进制位,即1111 1111,第一位1表示负数(0表示正数),
而负数在计算机内存中以补码(负数的补码为原码取反加一)的形式存储的。
则1111 1111的补码为0000 0001 十进制为1,因为其值为负数,即-1。

其次再来说明为什么选择字符、双字节、四字节时,二进制11111111的十进制计算器的结果为255。
原因:假设以字符为例
1111 1111在计算机内存中存储形式为 0000 0000 1111 1111,第一位为0,为正数,正数在计算机内存中以原码形式存储,即 0000 0000 1111 1111,十进制为255。

由以上可知,byte的最小值为1000 0000(需考虑到计算机存储负数时是以补码的形式存储。),即十进制为-128。

总结:
byte的最大值:0111 1111(二进制) 127(十进制)
byte的最小值:1000 0000(二进制) -128(十进制)
也可通过下面方法验证:一个字节的十进制最大等于255(二进制为1111 1111),即最大值与最小值的绝对值相加等于255,或俩二进制相加为1111 1111。
本文要点在于了解计算机内存对字节、字符、二字节、四字节占用的存储方式,以及负二进制在计算机内存中以补码存在的知识点。

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值