十進位制數轉化為二進位制數的兩種方法

2021-10-13 09:59:47 字數 1392 閱讀 7493

如果我們要把十進位制的150轉化為二進位制數,可以使用下面兩種方法:

這種方法的核心思想就是用二進位制的各位來「拼湊」出我們的十進位制數。

我們先把二進位制各位的位權列在**裡面。(我們如何知道要列多少位出來呢?其實我們就是要列到比150小並且最接近150的那一位,也就是列到128就可以了。)

12864

321684

21

然後我們從左往右看,如果需要使用這一位去拼湊150這個數,就在那一位的下方寫上1,反之,寫0.

128是最接近150的,必然要用到。所以**變成了下面的樣子: 

12864

321684

211

然後,我們從150裡面把128減掉,剩下的是22。我們發現64和32都比22大,那麼這兩位就用不到,記上0.

12864

321684

2110

0

16比22小,需要使用,記上1.

12864

321684

2110

01

把16從22裡減掉,得到6。8比6大,用不到,記上0.

12864

321684

2110

010

4比6小,需要使用,記上1.

12864

321684

2110

0101

把4從6裡減掉,得到2. 正好下一位的2可以使用,記為1。至此,就完成了拼湊,所以最後的1也用不上了,記為0.

12864

321684

2110

0101

10

**第二行連起來是10010110,它就是十進位制的150在二進位制中的表示。

這種方法的優點是比較容易理解,缺點是有些麻煩。如果數字很大,**需要列得很長。

第一步,150除以2,商75,餘0;

第二步,75除以2,商37,餘1;

第三步,37除以2,商18,餘1;

第四步,18除以2,商9,餘0;

第五步,9除以2,商4,餘1;

第六步,4除以2,商2,餘0;

第七步,2除以2,商1,餘0;

第8步,1除以2,商0,餘1.

組合的時候,一定要記得最後得到的餘數是二進位制中的最高位。所以我們要倒著組合,得到10010110.

可能這種方法一開始不是那麼好理解,可以對比我們熟悉的十進位制數。如果我們有乙個十進位制數168,第一次除以10,商16,餘8,這就相當於我們把個位的8(最低位)給「脫」下來了;第二次,16除以10,商1,餘6,這就相當於把十位的那個6給「脫」下來了;然後再用1除以10,商0,餘1,這就相當於把百位的1給「脫」下來了。所以我們這一路得到的餘數,是從低位到高位的數字。那麼二進位制裡,也是同樣的道理。

使用這種方法,還是比較便捷的,只要計算的時候細心一些就好了。

2023 將十進位制數轉化為二進位制數

time limit 3 second memory limit 2 mb 輸入乙個不大於32767的正整數n,將它轉換成乙個二進位制數並輸出。例如 輸入 100 輸出 1100100 為方便判斷當正整數n大於32767時的情況,請將n設定為長整型。如果n的值不在規定的範圍,將輸出 error 第一...

十進位制轉化為二進位制

今天我們來實現乙個有趣的小案例。要求 任意輸入乙個正十進位制數把它轉化為二進位制數輸出。我這裡使用了遞迴演算法 def transit num,binary 十進位制轉化為二進位制 param num 輸入的10進製 return none if num 2 remainder num 2 num ...

十進位制數轉化為二進位制與十六進製制

十進位制轉化為其他任何進製如出一轍,這裡就以十進位制轉化為二進位制為例,適當講解。首先舉出乙個10,對應的二進位制為00000000 00000000 00000000 00001010。考慮 首先 10 除以 2 商 5 餘 0 接下來 5 除以 2 商 2 餘 1 繼續 2 除以 2 商 1 餘...