0

我第一次学习从十进制数字到 IEEE 32 浮点标准的转换,现在我很困惑,因为我看到了几张讲座幻灯片和大学的例子,他们以一种方式进行,然后其他人以另一种方式进行。特别是在获取小数点的 1 和 0 时。所以,如果你有一个像 1234.567 这样的数字

您将 1234 转换为二进制没问题,但是我对如何转换十进制感到非常困惑。原来我看到你走了

.567 * 2 = 1.134 = 1
.134 * 2 = .268 = 0
.268 *2 = .536 = 0

请注意,这是小数位中有多少个数字。但是后来我看到其他示例继续使用小数点到某个永无止境的点(在哪里停止?)。如果我按照上面的方式进行操作,我会得到以下信息:

10011010010 for 1234
10011010010.100 
1.0011010010100 x 2 ^ (10).

127 +10 = 137. 137 in binary is 10001001.

So 32 bits of binary is

0 for sign| 10001001 for exp| 0011010010100 0000000000 

总共 32 位。这个对吗?

4

1 回答 1

0

第二种方法绝对好。但是,在计算 0.567 的二进制时,如果您没有到达终点(即0.0),那么至少要达到 23 位(尾数长度)。

对于你的小数 1234.567

1234 的二进制 = 100 1101 0010 
0.567 的二进制 = .1001 0001 0010 0110 1110 100(最多 23 位)
1234.567 的二进制 = 100 1101 0010.1001 0001 0010 0110 1110 100
= 1.00 1101 0010 1001 0001 0010 0110 1110 100 * 2^10 因此, 指数 = 10 归一化尾数(调整长度为 23 位)= 001 1010 0101 0010 0010 0100
符号位 = 0 因此 32 位浮点转换:
0 - 1000 1001 - 001 1010 0101 0010 0010 0100
于 2017-03-25T03:03:55.657 回答