如何找到基数为10的32位浮点表示?

时间:2014-09-26 23:41:25

标签: floating-point

我今天在测验中遇到了这个问题。谁能向我解释解决方案以及如何找到解决方案? 什么是base-10数字0.53125的32位浮点表示?在下面的选项中,最左边的位是数据值中最重要的位。

1 个答案:

答案 0 :(得分:0)

在这里,我们可以展示如何使用以下大纲将基本10实数转换为IEEE 754 binary32格式:

考虑一个带整数和小数部分的实数,例如12.375 将整数部分转换并规范化为二进制 使用如下所示的以​​下技术转换分数部分 添加两个结果并调整它们以产生适当的最终转换

小数部分的转换:

考虑0.375,即12.375的小数部分。要将它转换为二进制分数,将分数乘以2,取整数部分并将新分数再乘以2,直到找到零分数或达到精度限制,即IEEE 754 binary32格式的23分数位数

0.375×2 = 0.750 = 0 + 0.750 => b-1 = 0,整数部分表示二进制分数。重新乘以0.750乘以2以继续

0.750×2 = 1.500 = 1 + 0.500 => b-2 = 1

0.500×2 = 1.000 = 1 + 0.000 => b-3 = 1,分数= 0.000,终止

我们看到(0.375)10可以用二进制精确表示为(0.011)2。并非所有小数部分都可以用有限数字二进制分数表示。例如,十进制0.1不能精确地以二进制表示。所以它只是近似的。

因此(12.375)10 =(12)10 +(0.375)10 =(1100)2 +(0.011)2 =(1100.011)2