JAVAEE前期准备-----IEEE754标准
历史回顾
1.创建
在六、七十年代,各家计算机公司的各个型号的计算机,有着千差万别的浮点数 表示,却没有一个业界通用的标准。这给数据交换、计算机协同工作造成了极大不便。IEEE的浮点数专业小组于七十年代末期开始酝酿浮点数的标准。在1980年,英特尔公司就推出了单片的8087浮点数协处理器,其浮点数表示法及定义的运算具有足够的合理性、先进性,被IEEE采用作为浮点数的标准,于1985年发布。
2.创立者
加州大学伯克利分校的数值计算与计算机科学教授威廉·卡韩被誉为“浮点数之父”。
3.别称
该标准的全称为IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985),又称IEC 60559:1989,微处理器系统的二进制浮点数算术(本来的编号是IEC 559:1989)
4.现行标准
现在最新标准是“ISO/IEC/IEEE FDIS 60559:2020”。
IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number),一些特殊数值((无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式)。
IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,很少使用)与延伸双精确度(79比特以上,通常以80位实现)。
简要介绍
IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number),一些特殊数值((无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式)。
IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,很少使用)与延伸双精确度(79比特以上,通常以80位实现)。
JAVA需了解内容
1.二进制形式:
单精度浮点数float 占4字节32位
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210316222444652.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1ODY0MjE0,size_16,color_FFFFFF,t_70#pic_center)
2. 换算公式:(二进制–>float值)
符号位值(1或-1) * (1 + 尾数位表示数值)*2^(指数位值-127);
3.具体案例:
二进制101110111000000 00000000转化为float是多少?
(-1)^s * (1+ Significand) * 2^(Exponent-127)
1.Sign∶ 1=> negative(符号位)
2. Exponent:
0111 1101(二进制)= 125(10进制)
减去偏置常数∶ 125-127 =-2
3. Significand:
1+1x2-1+ 1x2+0x23+0x2-4+0x2-5 +…=1+21+2= 1+0.5+0.25= 1.75
4.Repersents∶-1.75(十进制)*2^(-2)=-0.4375
4. 案例验证:
// 1 011 11101 11000000000000000000000
// 输出float类型 二进制形式
float f = -0.4375F;
int intBits = Float.floatToIntBits(f);
String binary = Integer.toBinaryString(intBits);
System.out.println(binary);
5.分析:float取值范围大于long类型
long类型最大值: 2^63-1
float类型非最大值: 1 * (1+0) * 2^(254-127) = 1 * 1 * 2^127 = 2^127
float类型可以取到2^127 远大于 long类型最大值 2^63-1
###6.double类型二进制形式: