2013-03-28 285 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
相關問題