将十进制数转化成IEEE754格式
快期末考试了,在复习《计算机组成与系统结构》时对将十进制数转化为IEEE754格式这个知识点很困惑,怪自己在老师当初讲的时候没好好听讲,好在查阅了资料后弄懂了这个知识点,便记录下来给也有这个疑惑的同学给个参考,也便于日后自己温习。
IEEE754浮点数标准
目前几乎所有计算机都采用IEEE754标准表示浮点数。在这个标准中,提供了两种基本浮点格式:32位单精度和64位双精度格式。
格式如下:
32位单精度:符号(1位)+阶码(8位)+尾数(23位)
64位双精度:符号(1位)+阶码(11位)+尾数(52位)
计算过程:
有两种基本浮点格式,我们通过一个例子来详细介绍十进制数如何转换为32位单精度格式的,就以我老大的生日 (8.17)来举例。
(1)首先计算符号位,8.17是正数,所以符号位为 0。
(2)计算阶码:先将十进制数转化为二进制,小数点左边的8转为1000,小数点右边进行乘二取整运算(结果大于1则取1,小于1则取0)
0.17x2=0.34 (0)
0.34x2=0.68 (0)
0.68x2=1.36 (1)
0.36x2=0.72 (0)
0.72x2=1.44 (1)
0.44x2=0.88 (0)
0.88x2=1.76 (1)
......
0.12x2=0.24 (0)
0.24x2=0.48 (0)
0.48x2=0.96 (0)
0.96x2=1.92 (1)
由于小数点左边已有四位二进制数,所以小数点右边二进制只取二十位(这里需要解释下:由于尾数是用原码表示,第一位总为一,因而可在尾数中省略称为隐藏位的第一位1,所以需要计算24位二进制码),则8.17的二进制表示为:1000.0010 1011 1000 0101 0001。将小数点左移三位,得1.000 0010 1011 1000 0101 0001*2^3。得到阶码为:3+127=130,转成二进制是10000010,至此得到阶码为10000010。
(3)计算尾数:上一步计算阶码时,小数点左移三位后小数点右边的23位数就是尾数,即000 0010 1011 1000 0101 0001
(4)结果:十进制数8.17转化为IEEE754格式32位单精度格式的结果为:
符号位(1位)+ 阶码(8位) + 尾数(23位)
0 10000010 00000101011100001010001
(原创文章,转载请麻烦注明下出处,非常感谢!)