Java基本类型及整型,浮点型的字节范围详解

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位。

 

 

 

 

 

 

 

 

你可能感兴趣的:(Java基本类型及整型,浮点型的字节范围详解)