前言
Java数值分整数和浮点数,前一篇文章已经解析了Java整数的存储原理,本篇将接着解析浮点数在计算机里的存储原理。Java浮点数分单精度类型( float)和双精度类型(double),float 数据占用 32bit,double 数据占用 64bit。
Java浮点数标准
java中浮点数采用的IEEE754标准,该标准的全称为IEEE二进制浮点数算术标准。这个标准规定的存储格式是这样的:符号位+指数位偏移+尾数位
存储格式
IEEE 754常用的两种表示浮点数值的方式:单精确度(float 32位)、双精确度(double 64位)
存储格式
浮点数表示的数值:V = (-1)^s × M × 2^E
符号(sign) :1个bit表示,当s=0,V为正数;当s=1,V为负数。
阶码(exponent) :E的作用是对浮点数加权,用于存储科学计数法中的指数数据,并且采用移位存储。float类型的阶码是 8 bits,double类型的阶码是 11 bits。
尾数(significand) :M是一个二进制小数,因为是二进制,所以科学计数法中这个值范围是:1≤M<2。(和十进制中范围为1~10一样)