V = (-1)^s x M x 2^E
- 符号(sign):
s决定这数是负数(s=1)还是正数(s=0),而对于数值0的符号位解释作为特殊情况处理 - 阶码(exponent):
E的作用是对浮点数加权,这个权重是2的E次幂(可能是负数) - 尾数(fraction):
M是一个二进制小数,它的范围是1 ~ 2-ε,或者是0 ~ 1-ε
尾数部分可以视为定点小数,阶码为尾数加权,即用 尾数 x 2 ^ E,实际的作用是移动尾数(定点小数)中小数点的位置,加权为正数时向右移动小数点,加权为负数时向左移动小数点,因此这种表示方法被称为浮点数。
例如:十进制的 10.0,定点二进制表示是 1010.0,相当于 1.0100 × 2^3。那么,按照上面 V 的格式,可以得出 s=0,M=1.01,E=3。
k 为 exponent 的位数(float 8 位,double 11 位)
n 位 fraction 的位数(float 23 位,double 52 位)
- exponent 全为 1
- fraction 全为 0
- sign == 1:
-Infinity - sign == 0:
+Infinity
- sign == 1:
- fraction 不全为 0:
NaN
- fraction 全为 0
- exponent 全为 0(非规格化)
- 符号
(-1)^sign(0 为正数,1 为负数) - 阶码
1 - (2^(k - 1) - 1)(对于 float: 1 - (2^7 - 1) =-126) - 尾数
0.5 0.25, 0.125, 0.0625(对于 float:最小2^-23,最大1 - 2^-23) - 结果
(-1)^sign x 2^-126 x 尾数
- 符号
- 规格化
- 符号
(-1)^sign(0 为正数,1 为负数) - 阶码 (对于 float:
(-127, 128),-127全为 0,128全为 1) - 尾数
0.5 0.25, 0.125, 0.0625(对于 float:最小2^-23,最大1 - 2^-23) - 结果
(-1)^sign x 阶码 x (1 + 尾数)
- 符号