一、浮点表示格式
符号说明
V
V
V表示浮点数
S
S
S表示符号位,0为正,1为负
M
M
M表示尾数
E
E
E表示阶码
s
、
m
、
e
s、m、e
s、m、e分别表示
S
、
M
、
E
S、M、E
S、M、E的编码在在内存中的实际存储。
s
、
m
、
e
s、m、e
s、m、e都是以无符号形式表示的。
IEEE浮点数标准的公式为
V
=
(
−
1
)
S
×
M
×
2
E
V = (-1)^S \times M \times 2^{E}
V=(−1)S×M×2E
对于单精度浮点数(32位浮点数)来说,
s
s
s有1位,
m
m
m有23位,
e
e
e有8位。
对于双精度浮点数(64位浮点数)来说,
s
s
s有1位,
m
m
m有52位,
e
e
e有11位。
二、浮点表示可能情况
浮点数表示有三种情况,分别是
E
=
0
E = 0
E=0、
E
≠
0
E \neq 0
E=0、
E
=
2
11
E= 2^{11}
E=211
以双精度浮点数举例,
1.当
e
=
2
11
e= 2^{11}
e=211时,
V
V
V表示为不是一个数或正负无穷。
如果
m
=
2
52
,
s
=
1
m=2^{52},s=1
m=252,s=1,则
V
=
−
∞
V=-\infty
V=−∞。
如果
m
=
2
52
,
s
=
0
m=2^{52},s=0
m=252,s=0,则
V
=
+
∞
V=+\infty
V=+∞。
如果
m
≠
2
52
m\neq2^{52}
m=252,则
V
=
N
a
N
V=NaN
V=NaN。
N
a
N
NaN
NaN是指其不是一个数。
2.当
e
=
0
e = 0
e=0时,
E
=
1
−
B
i
a
s
,
B
i
a
s
=
2
11
−
1
−
1
,
M
=
m
E = 1-Bias,Bias = 2^{11-1}-1,M=m
E=1−Bias,Bias=211−1−1,M=m
3.当
e
≠
0
e \neq 0
e=0是,
E
=
e
−
B
i
a
s
,
B
i
a
s
=
2
11
−
1
−
1
,
M
=
1
+
m
E = e-Bias,Bias = 2^{11-1}-1,M=1+m
E=e−Bias,Bias=211−1−1,M=1+m
三、数据的舍入
如果需要将输入数据转化为浮点数,输入数据将采用偶数舍入的方式进行转换。其目的是降低因数据舍入带来的误差。
偶数舍入举例,要求以偶数舍入的保留小数点后1位。
输入数据为 1.24 、 1.25 、1.26 、1.34 、1.35 、1.36,
偶数舍入结果 1.2 、 1.2 、 1.3 、1.3 、1.4 、1.4