java基本类型
1.1 java的基本类型
1.整型: byte (1字节), short (2字节), int(4字节) ,long (8字节)
2.浮点型: float (4字节),double(8字节)(一般默认的double型)
3.字节型: char (2字节)
4.布尔型:boolean(2字节)
1.2字节定义
字节表示指一小组相邻的二进制数码,是计算机重要的数据单位,通常由8位数码构成一个字节。
例如: 0000 0001 就表示一字节。
1.3由字节推算基本类型范围
在二进制中,0表示正数,1表示负数。一字节有8位,可以得出一字节可以有2^8(256)个表达。计算机采用把0看为正数,那么平均下来:128个表示正数,128表示负数(字节的第一位表示其为正数还是负数)。
在计算机中,符号数都是以补码的形式存储的。对于正数来说,其补码就是原码。对于负数不同,是绝对值去反,然后加一。
比如: -1的绝对值为1 , 1的二进制: 0000 0001 取反:1111 1110 最后在加一: 1111 1111。
我们就能推算出整型的对应值范围:
byte :[-2^7,2^7-1], short[-2^15,2^15-1],int[-2^31,2^31-1],long[-2^63,2^63-1]。
对于:float和double与整型不同,它们的组成方式如下:
float: 1bit(符号位) + 8bits(指数位)+ 23bits(尾数位)
double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位).
那么 float的指数位有[-127,128].double的指位数有[-2^11-1,2^11].
其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
float整数位:[-2^128,2^128] ,double整数位:[-2^11,2^11]
尾数位: float: 2^23 ,double: 2^52 . 由此推到出: float的小数点精确到6-7位,double小数点精确到: 15~16位。
原因请思考下。答案在下面:
答案:
float:2^23 = 8388608,共七位,意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。