零碎知识
前言:在学习java基础时,对int,Double表示的范围有过了解,但是理解的不够透彻,容易遗忘,所以在这里简单记录下,方便日后的查阅
这里便以计算int的范围为例,其余类型类似。
问题:int的取值范围是-2147483648到+2147483647,为什么负整数的范围要比正整数范围大1?
在计算机中,数值用二进制进行表示。java中定义int占4个字节,即32位(比特)
其中最高位(即第一位)用来表示符号位,0代表正数,1代表负数
除去符号位,正整数的表示的最大值为:01111111 11111111 11111111 11111111 = 2的31次方-1 即为2147483647
除去符号位,负整数的表示的最小值为:11111111 11111111 11111111 11111111 = -(2的31次方-1) 即为-2147483647
那么-2147483648是从哪里来的呢?
其实还有一个数字0没有考虑,如果按符号位表示的话,有正0和负0 两种0 ,但是我们希望只有一个唯一的0,为了方便运算,把负0(10000000 00000000 00000000 00000000=-2^31)加入到负数的范围中去,所以负整数的范围就比正整数的范围多1