CSAPP Lecture4 浮点数
浮点数表示
数值模式:
(
−
1
)
s
M
2
E
(-1)^{s} M 2^{E}
(−1)sM2E
- 符号位 s 决定了数字的正负。
- 尾数(significand)M 通常介于 1.0与2.0之间;
Normalized Values正规化的值
s exp fraq
- exp != 00000 or exp != 111111 不能全是0 也不能全是1 ;
- E= Exp - Bias 其中Exp是 exp field中的 unsigned value(看作无符号数)。
B i a s = 2 k − 1 − 1 Bias = 2^{k-1} -1 Bias=2k−1−1
其中k是exp的位数
比如单精度8位的情况下, B i a s = 2 8 − 1 − 1 = 127 Bias = 2^{8-1}-1 = 127 Bias=28−1−1=127
Exp 从1 取到 254 则E就是 从-126 取到127
对于双精度的情况 k = 11,
B i a s = 2 11 − 1 − 1 = 1023 Bias = 2^{11-1} -1 = 1023 Bias=211−1−1=1023
Exp 从1 取到 2 11 − 2 = 2046 2^{11} -2 = 2046 211−2=2046,则E就是从-1022 去到1023
举个例子
对于数字 15213 = 11 1011 0110 1101
15213
=
11
1011
0110
1101
=
1.1
1011
0110
1101
\begin{equation*} \begin{aligned} 15213 & =& 11 \quad1011\quad 0110\quad1101 \\ &= & 1.1\quad 1011\quad 0110\quad 1101 \end{aligned} \end{equation*}
15213==111011011011011.1101101101101
经过归一化之后应该是
M
=
1.
1
1011
0110
1101
‾
M = 1. \underline{1 \quad 1011 \quad 0110 \quad 1101}
M=1.1101101101101
这个时候
f
r
a
c
=
1.
1
1011
0110
1101
‾
0000
0000
00
frac = 1. \underline{1 \quad 1011 \quad 0110 \quad 1101}\quad 0000\quad 0000 \quad 00
frac=1.11011011011010000000000(单精度)
对于Exponent
E
=
13
E = 13
E=13
B
i
a
s
=
127
Bias = 127
Bias=127
e
x
p
=
E
+
B
i
a
s
=
140
=
1000
1100
exp = E+Bias = 140 = 1000 \quad 1100
exp=E+Bias=140=10001100
所以得到的结果就是:
r
e
s
u
l
t
=
0
1000
1100
1
1011
0110
1101
0000
0000
00
result = 0 \qquad 1000\quad 1100 \qquad 1 \quad 1011 \quad 0110 \quad 1101\quad 0000\quad 0000 \quad 00
result=01000110011011011011010000000000
- 尾数 M : 1.xxxx。其中xxxx:bits of frac filed
当xxxx = 00000… 最小值 M= 1.0
当xxxx = 111111…最大值 M= 2- ε \varepsilon ε