小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文同时参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金
定点数与浮点数据表示
<1> 定点数据表示
- 可表示定点小数和整数
- 表现形式:X0.X1X2X3 ... Xn(定点小数)
- 定点小数的表示数的范围(补码为例):-1 x 1-2n
- 定点整数表示数的范围(补码为例): -2n x 2n - 1
- 顶点数据表示数的不足:数据表示范围受限
<2> 浮点数据表示
- 把数的范围和精度分别表示的一种数据表示方法
浮点数的使用场合 当数的表示范围超出了定点数能表示的范围时
1. 格式(一般格式)
- E: 阶码位数,决定数据的范文
- M: 尾数位数,决定数的精度
- 一般表示格式的不足
- 数据移植性太差
- 不同系统可能根据自己的浮点数格式从中提取出不同位数的阶码
2. IEEE 754格式
S | 8位偏指数E | 23位有效尾数M | 单精度
-
| - | - | - S | 11位偏指数E | 52位有效尾数M | 双精度
-
指数采用偏移值,其中单精度偏移值为127,双精度为1023,将浮点数的阶码值变成非负整数,便于浮点数的比较和排序
-
IEEE754 尾数形式为 1.XXXXXX, 其中M 部分保存的是XXXXXX(1被隐藏),从而可保留更多的有效位,提高数据表示的精确度
-
与上述IEEE754格式相对应的32位浮点数的真值可表示为: N = (-1)s × 2E-127 × 1.M 随E和M的取值不同,IEEE754浮点数据表示具有不同的意义
- E = 0,M = 0 : 表示机器零
- E = 0,M 0 : 则N = (-1)s × 2-126 × 0.M, 非规格化的浮点数
- 1 E 254: N = (-1)s × 2E-127 × 1.M, 规格化的浮点数
- E = 255, M = 0 : 无穷大的数,对应于 x/0 (其中x 0)
- E = 255, M 0 : N = NaN, 表示一个非数值,对应于 0/0
-
IEEE754 32位浮点数与对应真值之间的交换流程
-
案例
最后,欢迎大家关注我的个人微信公众号 『小小猿若尘』,获取更多IT技术、干货知识、热点资讯