生活中,人腦對很多事物都形成了條件反射,比如數字,習慣了十進制的我們可以很方便的對數字25、27進行大小比較和數值運算,卻很難對二進制數字11001、11011有直觀的感受。
其實想要弄清楚這些進制很簡單,十進制各位都很熟悉,那先從十進制入手。
十進制計數規則是:
- 基數為10。
- 有10個數字,0、1、2、3、4、5、6、7、8、9。
- 逢10進1,借1當10。
那麼,二進制計數規則就是:
- 基數為2。
- 有2個數字,即0和1。
- 逢2進1,借1當2。
十進制可以有多位組成,從右向左依次為個位、十位、百位、千位、萬位...
於此類似,那麼二進制也可以由多位數組成,從右向左分別為1位、2位、4位、8位、16位...
為什麼稱二進制的位數為1位、2位、4位...
其實這是從十進制的角度看二進制各位數得出的名稱。
看上表,當二進制產生進位時,代表的十進制數為2、4、8、16、32、64、128...
二進制雖然只有0和1兩個數字,但是由於數字所處的位置不同,表示的數據也不同,例如:
二進制數 “1011”
這個二進制數共有4位,由3個1和1個0組成,比如數字1所處位置不同,所代表的大小也不同,其所處位置稱作權。從右向左順序各個位表示十進制的含義:
第一個1表示:1的個數
第二個1表示:2的個數
第三個0表示:4的個數
第四個1表示:8的個數
(在此可以類比十進制1011,由1個1000,0個100,1個10,1個1組成。)
所以,二進制數1011由1個8,0個4,1個2,1個1組成。按各位的權列出:
按這種權展開式可以很方便將二進制轉換為十進制。
相應的,十進制轉換成二進制整數就通常採用“除2取餘,逆序排列”的方法。具體做法是用2整除十進制整數,可以得到一個商和餘數,再用2去除商,又會得到一個商和餘數,如此反覆,直到商為0停止。再把先得到的餘數作為二進制低位有效位,後得到的餘數作為二進制高位有效位,依次排列。
舉個栗子:
將十進制“11”轉換為二進制。
將十進制11轉換為二進制數為1011。
和十進制相比,二進制的運算規則也就簡單多了。
加法
二進制運算只會有以下4種可能:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
(逢二進一)
對於多位數二進制相加,考慮進位採用“逢2進1”的方式,例如十進制25(二進制11001)加上十進制27(二進制11011):
減法
也只有4種可能:
0 - 0 = 0
1 - 0 = 1
1 - 1 = 0
0 - 1 = 1
(借一當二)
乘法
十進制可以按照九九乘法表運算,二進制乘法規則就簡單多了,也有4種情況:
0 × 0 = 0
1 × 0 = 0
0 × 1 = 0
1 × 1 = 1
二進制乘法也可以很簡單轉換為加法運算,例如十進制25(二進制11001)乘以十進制5(二進制101)。
除法
除法是乘法的逆運算,二進制乘法有4種,除法也是應該對應4種,考慮0作為除數是沒有意義的。所以除法有以下兩種:
0 ÷ 1 = 0
1 ÷ 1 = 1
例如十進制25(二進制11001)除以十進制5(二進制101)。
比較複雜的乘法和除法運算都能簡單的轉換為加、減和位移操作,所以一般計算機也只需要設計一個加法器即可。
二進制弄清楚了,八進制也就很好懂了。
其實很早,古人就明白了八進制的概念,比如八卦...
八卦最初就是古人的記事符號,只是後來作為占卜工具被打上封建迷信的標誌。
其中隱含著二進制和八進制的概念。
八卦的基本元素就是陰和陽,相當於二進制中的0和1。
下圖中用長實線代表“陽”,用中間斷開的線代表“陰”,然後由3種這樣的線條組成8種形狀,相當於3位二進制數表示8種狀態。
當然,八進制計數不可能用八卦表示,通常採用0-7的阿拉伯數字表示
八進制的計數規則:
- 基數為8。
- 由8個數字組成,分別是0、1、2、3、4、5、6、7。
- 逢8進1,借1當8。
十六進制,在古代中國當時使用的重量單位就是十六進制,16兩為1斤,就有了所謂的“半斤八兩”。
同樣十六進制的計數規則為:
- 基數為16。
- 由16個數字符號組成,分別是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
- 逢16進1,借1當16。
各種進制的轉換
前面二進制和十進制相互轉換的方法,同樣適用於其他進制的數轉換為十進制。
“按權展開”—其他進制轉換為十進制(B表示各進制的基數,n表示位數):
例如十六進制數BC0D轉換為十進制:
“除基數B取餘,逆序排列”方法可以將十進制數轉換為任意進制數。
二進制和八進制、十六進制數的轉換可以採用更簡單的方法。
二進制轉換為八進制,採用“3位並1位”,按從右向左方向,每3位二進制位一組,最高位不足3位,添0補足3位,然後將各組3位二進制數加權展開,得到八進制數。
將八進制轉換為二進制採用相反的操作“1位拆3位”。
類似的,十六進制和二進制轉換為“4位並1位”,“1位拆4位”的方法。
閱讀更多 凃小圖Oo 的文章