IEEE754制32位浮点数转换为十进制
首先了解一下IEEE754制32位浮点数的存储方式
一个由IEEE745制的32位浮点数由三部分组成
组成部分 | 位数 | 含义 |
---|---|---|
符号位 | 1位 | 0为正,1为负 |
指数位 | 2~9位 | 类比十进制的科学计数法,此处以2为底,指数位为幂。注意还需要加上-127的偏移量 |
尾数位 | 10~32位 | 省略了1. 实际为1.(尾数位),类似小数的二进制写法 |
(一)IEEE754制32位浮点数转为十进制
核心逻辑:
IEEE制浮点数
⇒
\Rightarrow
⇒浮点数的二进制表示
⇒
\Rightarrow
⇒浮点数的十进制表示
我们用例子来帮助理解
我们有一个用IEEE754二进制表示的32位浮点数: 0 1000 0011 0100 1000 0000 0000 0000 000, 求它所代表的十进制浮点数是多少?
第一步:
符号位为0
⇛
\Rrightarrow
⇛正数
第二步:
尾数部分: 1.0100 1000 0000 0000 0000 000
将多余0舍去得1.01001
第三步:
指数位:
(
10000011
)
2
(1000 0011)_2
(10000011)2=
(
131
)
10
(131)_{10}
(131)10
加上偏移量:131+(-127)=4
第四步:组合: 1.01001 × 2 4 = 10100.1 1.01001\times2^4=10100.1 1.01001×24=10100.1
至此已将IEEE制浮点转换为浮点数的二进制表示
最后再将其转换为十进制:
1
×
2
4
+
0
×
2
3
+
1
×
2
2
+
0
×
2
1
+
0
×
2
0
+
1
×
2
−
1
=
20.5
1\times 2^4+ 0\times2^3+1\times2^2+0\times2^1+0\times2^0+1\times2^{-1}=20.5
1×24+0×23+1×22+0×21+0×20+1×2−1=20.5
(二)十进制浮点数转为IEEE754制32位
核心逻辑:
十进制浮点数
⇒
\Rightarrow
⇒二进制浮点数
⇒
\Rightarrow
⇒IEEE制浮点数
我们用例子来帮助理解
已知一个浮点数34.625,求它IEEE754制32位二进制表示为多少?
第一步:
由正负确定IEEE制符号位,若正则为0,若负则为1
为正数:符号位可得,为0
第二步:
将十进制浮点数转为二进制浮点数。(可以参考这一篇文章带小数十进制转二进制–图解)
(
34.625
)
10
=
(
100010.101
)
2
(34.625)_{10}=(100010.101)_2
(34.625)10=(100010.101)2
第三步:
将得到的二进制浮点数转化为1.xxx的形式
100010.101=1.00010101
×
2
5
\times 2^5
×25
则尾数位可得,为00010101
第四步:
将偏移后的指数位复原
x
10
x_{10}
x10+
(
−
127
)
10
(-127)_{10}
(−127)10=
(
5
)
10
(5)_{10}
(5)10
x
10
x_{10}
x10=
(
132
)
10
(132)_{10}
(132)10=
(
10000100
)
2
(1000 0100)_2
(10000100)2
指数位可得,为1000 0100,最后再用0补齐剩余位数至23位
更多推荐
【IEEE754制32位浮点数】与十进制相互转换
发布评论