十進制整數轉二進制數用什么方法?網上一搜,大部分答案都是用短除法,也就是除2反向取余法。這種方法是最基本最常用的,但是計算步驟多,還容易出錯,那么還有沒有其他更好的方法嗎?
一、短除反向取余法
具體的步驟是不斷將十進制數除以2,每次記錄余數,直至商為0,然后把所有余數從下向上(反向)的順序排列,即得到二進制數。
例如,把十進制數69轉換為二進制數,結果為1000101,計算過程如圖1所示。

通過觀察圖1,可以看出:
? ? ? ? ? ? ?(1)
一般表達式為:
,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)
十進制數轉化為二進制數的結果就是把系數從
到
(從最高位到最低位)的排列。
如果把(1)式中的系數的項去掉,那么有
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ?? (3)
也就是把十進制數轉換為二進制的過程,實際上就是把十進制數轉換為若干個以2為底的冪運算之和,那么一般表達式為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(4)
在(3)式中,,
,
。
也就是在十進制的69轉換為二進制后,數位序號為0,2,6的項系數為1,其他項系數都為0(數位序號從右向左依次增1,最低位序號為0),如表1所示,表格中橙色項系數為1,白色項系數為0。
二進制數 | 1 | 0 | 0 | 0 | 1 | 0 | 1 |
位序號 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
位權重 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
二、貪心算法
那么如何快速求呢?本人經過研究發現,利用貪心算法的思維,可以很好的解決這個問題。
1、貪心算法簡介
貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的局部最優解。
2、操作步驟
假設十進制數為,根據公式(4),用貪心算法思維進行十進制轉二進制計算的步驟為:
(1)先找出中最大的那一項
,并記錄
;
(2)把最大項的值從中減掉:
(3)跳轉到步驟(1)循環計算,直到,計算結束。
例如,十進制數,計算過程為:
(1)找出69中最大的項為64,也就是,記錄
;
(2);
(3)找出5中最大的項為4,也就是,記錄
;
(4);
(5)找出1中最大的項為1,也就是,記錄
;
(6),計算結束;
計算的結果為:69=+
+
=64+4+1
二進制數位序號0,2,6的項為1,其他位序號的項為0,得到結果為1000101。
對比短除法和貪心法,可以發現,貪心算法計算步驟少,準確率也較高,不容易算錯,但是需要我們事先記住一些常用的的值,這樣才有助于我們更快找出最大項。表2為
的
的值。
值 | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 |
(本文結束)