int和long类型取值范围。
1. int类型 ---------4字节(32位)
-------------------------------------------------------------------------------范围
①(无符号整型) -------------- unsigned int ***************************** 0 ~ 4294967295(2^32-1)
②(有符号整型)(一般省略signed) int ********** -2147483648(-2^31) ~ 2147483647 (2^31-1)
有符号,最高位是一个符号位,1代表负数,0代表正数,所以是31位,再减1,是因为正数还有个0。
2. long类型 ---------8字节(64位)
范围: long -9223372036854775808(-2^63) ~ 9223372036854775807(2^63-1)
【例1】
Long long1 = 2147483648;
错误默认是int类型,2147483648为int类型,但是报错了,类型不匹配,而且超出int类型范围
Long long2 = (long)2147483648;
正确 , 2147483648本来就是int类型,强制类型转换成了long类型因为long的范围大,可以装下
【例2】
Long long1 = 2147483648L;
正确在后面加L, 说明定义时就是long类型了,,没有写,就是默认int类型
3. 还有其他的一些范围(8中基本数据类型),只要记住类型的 字节数(乘以8 = 位数),就可以自己计算范围了。
在低字节转高字节时自动转换类型:byte < short < char = int < long , float < double
注: long型后如果不加L则默认为int型,浮点型如果不加F则默认为double型
4. 浮点型
float类型为例:
从高位到低位排列
符号位:占一位,1表示负数,0表示正数
指数位:8位,二进制转换位转换成十进制后再减去127,即为指数。
尾数位:23位
同理,double占8个字节,存储方式:1位符号位 + 11位指数位 + 52位尾数位
int和long类型取值范围。 基本数据类型 byte short char int long float double boolean类型取值范围