2013-03-28 219 views
0

我第一次学习从十进制数到IEEE 32浮点标准的转换,并且此刻感到困惑,因为我看到几个演讲幻灯片和来自大学的例子,他们是这样做的,然后是其他人做的其他方式。特别是获取小数点的1和0。所以,如果你有一个像1234.567IEEE浮点数转换32位

你转换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位全部在一起。它是否正确?

+0

是对整数部分1234(如在盒装例子)或12345(如前两段)? – jerry

+0

哇,对不起,我想转换的数字是1234.567。 – Tastybrownies

+0

其实我觉得我明白了。如果在第一次将左数字转换为二进制数时,我可以从1的右边开始计算数字的数量,我知道有多少次必须将小数结果乘以2.在此示例中,如果我在右边有10个数字1,我需要13才能填满23分配给尾数! – Tastybrownies

回答

0

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

对于你的小数1234.567

 
binary of 1234  = 100 1101 0010 
binary of 0.567 = .1001 0001 0010 0110 1110 100 (up to 23 bit)
binary of 1234.567 = 100 1101 0010.1001 0001 0010 0110 1110 100
= 1.00 1101 0010 1001 0001 0010 0110 1110 100 * 2^10 Hence, Exponent = 10 Normalized Mantissa (with adjusted length 23 bit) = 001 1010 0101 0010 0010 0100
Sign bit = 0 Hence 32 bit floated conversion :
0 - 1000 1001 - 001 1010 0101 0010 0010 0100
相关问题