10進製與2進製的轉換

2022-08-01 23:12:16 字數 2419 閱讀 7065

10進製與2進製轉換還真是個麻煩事,由於生活中,我們都是用10進製的,所以,當我們生活中遇到2進製的數字時,總是需要轉換成10進製來處理,而電腦開發者,還經常要在兩種進製裡互換!

以前,將10進製與2進製互換,我總是以2n次方來轉,如下:

18  轉 2進製 n次方方法

18 = 16 + 2

18 = 24 + 03 + 02 + 21 + 00

18 = 10010

此方法的要求:

第一步:加數一定要是2的n次方,

第三步:將乘方底數不為0的寫為1,為0的照寫下來就是2進製了!

總結:這種方法遇到大的數就麻煩了,因為要心數2n次方

後來,不經意中看到了另外乙個轉換的方法!就是除2取餘後,反取餘數就可!如下:

18  轉 2進製 取餘方法

(1)18 / 2 = 9 …… 0     

(2)9 / 2 = 4 …… 1

(3)4 / 2 = 2 …… 0

(4)2 / 2 = 1 …… 0

(5)1 / 2 = 0 ……  1

反取餘數就是:10010,所以:18=10010

總結:此方法比較好,再大的數,除以2都很容易算!

反推:既然用取餘法將10進製轉換2進製那麼方便!那麼是否可以依據取餘法來推算出2進製轉10進製?

依上面的運算來反推算:

(1)18 / 2 = 9 … 0  》 9 x 2 + 0 = 18

(2)9 / 2 = 4 …… 1  》 4 x 2 + 1 = 9

(3)4 / 2 = 2 …… 0  》 2 x 2 + 0 = 4

(4)2 / 2 = 1 …… 0  》 1 x 2 + 0 = 2

(5)1 / 2 = 0 ……  1 》 0 x 2 + 1 = 1

運算順序如下:

(1)0 x 2 + 1 = 1

(2)1 x 2 + 0 = 2

(3)2 x 2 + 0 = 4

(4)4 x 2 + 1 = 9

(5)9 x 2 + 0 = 18

以上運算的特點:

第二個加數,剛好按二進位制的高位至低位依次排下來

(1)0 x 2 + 1 = 1(加數1是二進位制的最高位)

(2)1 x 2 + 0 = 2(加數0是二進位制的第2位)

(3)2 x 2 + 0 = 4(加數0是二進位制的第3位)

(4)4 x 2 + 1 = 9(加數1是二進位制的第4位)

(5)9 x 2 + 0 = 18(加數0是二進位制的第5位)

由於第一步(1)0 x 2 + 1 = 1

,第乙個乘數只能是0,所以,第一步的

和與加數一定是相同的!也即是說第二步的第乙個乘數就是二進位制的最高位!

所以,2進製轉換10進製的運算過程應為:(最高位x2+第2位的和)x2+第3位,重複運算至最後一位即可!如下:

2進製的101轉為10進製的運算過程

1x2+0=2 (第乙個乘數1是二進位制的最高位,第2個加數0

是二進位制的第2位)

2x2+1=5 (第2個加數1

是二進位制的第3位,也就是最後一位,至此運算結束)

101 = 5

2進製的11001轉為10進製的運算過程

1x2+1=3

3x2+0=6

6x2+0=12

12x2+1=25

11001=25

拓展:取餘方法也可以應用於10以內的進製轉換,只要將進製做為除數就可以!

18  轉 4進製

18 / 4= 4 …… 2

4 / 4 = 1 …… 0

1 / 4 = 0 …… 1

反取餘數就是:102,所以:18 = 102

10進製轉換18進製 2進製

將乙個10進製數除以18,得到的商再除以18,依次類推直到商等於1或0為止,倒序取得的餘數即為18進製的結果。同理轉換為2進製。如圖 實現 如下 public class cal4 轉換18進製 param number return public static listto18 int numbe...

10進製34進製轉換

10進製34進製轉換 對映表 0 9 a z 除去i,o static const char code10map34 10進製轉為34進製 udec 10進製資料 szcode 34進製字元 itgtlen 34進製長度 不足時前面插入0 返回34進製字元長度 int dec2thrityfour ...

10進製轉2進製

題目 將10進製數字轉換為2進製。思考 進製轉換有三種情況。十進位制轉二,八,十六進製制 三種轉化的方法類似,我重點說十進位制轉二進位制的方法,其餘兩種情況可以模擬。十進位制轉二進位制 方法 10進製數字,整數部分除2後每次餘數反向取 小數部分乘2直到小數部分為0 特殊情況取位數 將整數部分正向取。...