1. 程式人生 > >將十進位制轉換為二進位制、八進位制、十六進位制

將十進位制轉換為二進位制、八進位制、十六進位制

將十進位制轉換為其它進位制時比較複雜,整數部分和小數部分的演算法不一樣。
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。

如果一個數字既包含了整數部分又包含了小數部分,那麼將整數部分和小數部分開,分別按照上面的方法完成轉換,然後再合併在一起即可。例如:
十進位制數字 369260.930908203125 轉換成八進位制的結果為 110076.7345;
十進位制數字 42.0.6875 轉換成二進位制的結果為 101010.1011。
下表列出了前 17 個十進位制整數與二進位制、八進位制、十六進位制的對應關係:
在這裡插入圖片描述


注意,十進位制小數轉換成其他進位制小數時,結果有可能是一個無限位的小數。請看下面的例子:
十進位制 0.51 對應的二進位制為 0.100000101000111101011100001010001111010111…,是一個迴圈小數;
十進位制 0.72 對應的二進位制為 0.1011100001010001111010111000010100011110…,是一個迴圈小數;
十進位制 0.625 對應的二進位制為 0.101,是一個有限小數。
二進位制和八進位制、十六進位制的轉換
其實,任何進位制之間的轉換都可以使用上面講到的方法,只不過有時比較麻煩,所以一般針對不同的進位制採取不同的方法。將二進位制轉換為八進位制和十六進位制時就有非常簡潔的方法,反之亦然。
1) 二進位制整數和八進位制整數之間的轉換
二進位制整數轉換為八進位制整數時,每三位二進位制數字轉換為一位八進位制數字,運算的順序是從低位向高位依次進行,高位不足三位用零補齊。下圖演示瞭如何將二進位制整數 1110111100 轉換為八進位制:
在這裡插入圖片描述
從圖中可以看出,二進位制整數 1110111100 轉換為八進位制的結果為 1674。

八進位制整數轉換為二進位制整數時,思路是相反的,每一位八進位制數字轉換為三位二進位制數字,運算的順序也是從低位向高位依次進行。下圖演示瞭如何將八進位制整數 2743 轉換為二進位制:
在這裡插入圖片描述
從圖中可以看出,八進位制整數 2743 轉換為二進位制的結果為 10111100011。
2) 二進位制整數和十六進位制整數之間的轉換
二進位制整數轉換為十六進位制整數時,每四位二進位制數字轉換為一位十六進位制數字,運算的順序是從低位向高位依次進行,高位不足四位用零補齊。
下圖演示瞭如何將二進位制整數 10 1101 0101 1100 轉換為十六進位制:
在這裡插入圖片描述
從圖中可以看出,二進位制整數 10 1101 0101 1100 轉換為十六進位制的結果為 2D5C。
十六進位制整數轉換為二進位制整數時,思路是相反的,每一位十六進位制數字轉換為四位二進位制數字,運算的順序也是從低位向高位依次進行。下圖演示瞭如何將十六進位制整數 A5D6 轉換為二進位制:
在這裡插入圖片描述
從圖中可以看出,十六進位制整數 A5D6 轉換為二進位制的結果為 1010 0101 1101 0110。
總結:數制之間的轉換方法大都這樣,只有多加練習方能熟練運用!