Java面试基础篇——第一篇:Java 八大基本类型

原创
2018/07/10 13:05
阅读数 217
type Size Range Default
boolean 1 bit true or false false
byte 8 bit [-128, 127] 0
short 8 bit [-32768, 32767] 0
char 16 bit '\u0000', '\uffff' or [0,65535] '\u0000'
int 32bit 2^31-1,2^31-1 0
float 32bit 32bit IEEE 754 floating-point 0.0
double 64bit 64bit IEEE 754 floating-point 0.0
long 64bit [-2^63, 2^64-1] 0

关于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!

展开阅读全文
打赏
0
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部