整数数据类型包括: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。
本文要点在于了解计算机内存对字节、字符、二字节、四字节占用的存储方式,以及负二进制在计算机内存中以补码存在的知识点。