Java的主要类型
主类型
默认值
大小(位)
最小值
最大值
封装器类型
boolean
false
1
–
–
Boolean
char
‘\u0000′(null)
16
Unicode 0
Unicode 2^16-1
Character
byte
(byte)0
8
-128
127
Byte
short
(short)0
16
-2^15
+2^15-1
Short
int
32
-2^31
+2^31-1
Integer
long
0L
64
-2^63
-2^63-1
Long
float
0.0f
32
IEEE754
IEEE754
Float
double
0.0d
64
IEEE754
IEEE754
Double
对于float:共32个bits,Bit 31是MSB(Most Significant Bit),Bit 0是LSB(Least Significant Bit),则
Bit 31是符号位,接下来的8位是指数位,指数位被视为一个无符号的数,它与127的差就是以2为底的指数的部分。 最后的23位是小数部分。
## 在byte(8位)中的取值范围为-128 到 127的问题
在电脑用是使用补码来存储数字的,我搜索了很多,还不是很明白。以前的反码之类的没认真学习。。。
因为 -0 和 +0 在补码中是不一样的,把 1000 0000 作为-128(补) ,127(补)=0111 1111,0(补) = 0000 0000, -127(补) = 1111 1111, -128在9位中表示应该为 1 1000 0000,取低八位就变成了 1000 0000
摘录一篇文章如下,更详细可以点链接查看
http://topic.csdn.net/t/20050828/10/4235813.html
在机器中
负数的补码是这样算的:
先将该负数取绝对值,再用二进制表示出这个绝对值
对该二进制数进行取反加一操作就得到负数的补码了
-128 绝对值是 128
128的二进制表示为:
1000 0000
取反
0111 1111
加1
1000 0000
这就是-128的补码