N進制與十進制之間的 轉換(整數,小數)


轉載自 https://blog.csdn.net/liubing8609/article/details/82695059

1) 整數部分

十進制整數轉換為N進制整數采用“除N取余,逆序排列”法。具體做法是:

將N作為除數,用十進制整數除以N,可以得到一個商和余數;

保留余數,用商繼續除以N,又得到一個新的商和余數;

仍然保留余數,用商繼續除以N,還會得到一個新的商和余數;

……

如此反復進行,每次都保留余數,用商接着除以N,直到商為0時為止。

把先得到的余數作為N進制數的低位數字,后得到的余數作為N進制數的高位數字,依次排列起來,就得到了N進制數字。

下圖演示了將十進制數字36926轉換成八進制的過程:

 

 

 

 

從圖中得知,十進制數字36926轉換成八進制的結果為110076。

下圖演示了將十進制數字42轉換成二進制的過程:

 

 

 

 

從圖中得知,十進制數字42轉換成二進制的結果為101010。

2) 小數部分

十進制小數轉換成N進制小數采用“乘N取整,順序排列”法。具體做法是:

用N乘以十進制小數,可以得到一個積,這個積包含了整數部分和小數部分;

將積的整數部分取出,再用N乘以余下的小數部分,又得到一個新的積;

再將積的整數部分取出,繼續用N乘以余下的小數部分;

……

如此反復進行,每次都取出整數部分,用N接着乘以小數部分,直到積中的小數部分為0,或者達到所要求的精度為止。

把取出的整數部分按順序排列起來,先取出的整數作為N進制小數的高位數字,后取出的整數作為低位數字,這樣就得到了N進制小數。

下圖演示了將十進制小數0.930908203125轉換成八進制小數的過程:

 

 

 

 

從圖中得知,十進制小數0.930908203125轉換成八進制小數的結果為0.7345。

下圖演示了將十進制小數0.6875 轉換成二進制小數的過程:

 

 

 

 

從圖中得知,十進制小數 0.6875 轉換成二進制小數的結果為 0.1011。

如果一個數字既包含了整數部分又包含了小數部分,那么將整數部分和小數部分開,分別按照上面的方法完成轉換,然后再合並在一起即可。例如:

十進制數字 36926.930908203125 轉換成八進制的結果為 110076.7345;

十進制數字 42.6875 轉換成二進制的結果為 101010.1011。

下表列出了前17個十進制整數與二進制、八進制、十六進制的對應關系:

 

 

注意,十進制小數轉換成其他進制小數時,結果有可能是一個無限位的小數。請看下面的例子:

十進制0.51對應的二進制為0.100000101000111101011100001010001111010111...,是一個循環小數;

十進制0.72對應的二進制為0.1011100001010001111010111000010100011110...,是一個循環小數;

十進制0.625對應的二進制為0.101,是一個有限小數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM