十進制小數轉換成二進制的原理理解

十進制小數轉換成二進制的原理理解

在學習浮點數據類型的時候,涉及到了10進制的小數如何轉成2進制數的問題(此文章不討論精度問題,僅涉及轉換原理--乘2取整).學習到的方法是「乘2取整「,可是一直不知道具體原理是什麼,如今從數學上說明一下原理學習

乘2取整的操做方法

將十進制的小數部分乘2,將所得結果的整數位做爲二進制的位。捨棄乘2所得結果的整數部分,若是剩餘部分爲0,計算結束。不然繼續乘2,進行取整操做(所得整數位繼續向右添加)。(若是出現循環,則終止計算,寫成循環小數格式,或根據精度位數要求,保留結果位數,中止計算)
舉例說明:


十進制數:0.25

1. 0.25 x 2 = 0.5 二進制數 : 0.0

2. 0.5 x 2 = 1.0 二進制數 : 0.01

結果二進制數: 0.01

原理解釋

十進制數的小數部分 M 對應二進制部分應爲 A1 * 2^(-1) + A2 * 2^(-2) + ... + An * 2^(-n) 其中An 爲 0 或 1code

如今將 M 乘 2 :M * 2 = A1 * 2^0 + A2 * 2^-1 + ... + An * 2^(1-n)數學

此時,A1 * 2^0 = A1 即爲 M * 2的整數部分的值 求出了A1.原理

而後捨棄M * 2 的整數部分,即捨棄了 A1. M * 2 - A1 = A2 * 2^-1 + ... + An * 2^(1-n)循環

最後不斷重複這一計算方式,直到乘2所得的結果小數部分爲0(或者達到要求精度的位數)爲止,二進制小數即爲: 0.A1A2..Am (爲0時m=n,不然根據精度要求決定m大小)數據類型