10進制與2進制轉換還真是個麻煩事,由於生活中,我們都是用10進制的,所以,當我們生活中遇到2進制的數字時,總是需要轉換成10進制來處理,而電腦開發者,還經常要在兩種進制里互換!
以前,將10進制與2進制互換,我總是以2N次方來轉,如下:
18 轉 2進制 n次方方法
18 = 16 + 2
18 = 24 + 03 + 02 + 21 + 00
18 = 10010
此方法的要求:
第一步:加數一定要是2的N次方,
第二步:N次方要從大到小寫下來(見43210),某一位的N次方沒有在上一步加數里則以0代替(見03+02)
第三步:將乘方底數不為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
