这个说起来比较复杂了,这个浮点型数和整形数值的存储方式。大家知道计算机的数据都保存为2进制数据。整数保存起来非常方便,直接十进制转化为二进制就可以了。但是浮点数(也就是实数)使用二进制保存起来就十分麻烦。有的时候看一个事务的名字就能得到很多信息(这也是很多牛人说的,代码就是最好的注释,好的代码变量命名也很重要)。为什么叫浮点数呢, 点是小数点,浮是浮动的意思。浮动的小数点 这个名字其实正是说明了,浮点数的存储方式。浮点数 的保存方法是,选用一个二进制区段 保存小数,去另一个区段的二进制位,表示小数点的位置如图所示
从网上查了一下
Java遵循的是IEEE 754 规范。在这个规范里,提到了浮点数的三种类型:单精度、双精度和双精度扩展。
这三种类型的浮点数的存储都由三部分组成:符号位、指数位和小数位组成,不同的是三者指数位和小数位的位数不一样。
IEEE 单精度格式具有24 位有效数字精度,并总共占用32 位。IEEE 双精度格式具有53 位有效数字精度,并总共占用64 位。至于双精度扩展,IEEE规定它至少具有64 位有效数字精度,并总共占用至少79 位。
其实说白了,就是 浮点数是按照科学技术法的方式保存的。按照整数的存数方式是不可能的。学习位操作的时候 应该知道 位操作是基于存储格式的,而浮点数的存储格式十分复杂,转换为十进制的计算也同样比较复杂。基于整数存储格式进行的位操作对于浮点数自然也就无效了。
|
-
浮点数.JPG
(9.35 KB, 下载次数: 35)
浮点数的存储格式
|