在講轉換之前,我們來了解下兩種進制的概念。十進制是我們從小就開始學習的,可以說非常熟悉,之所以使用這么廣泛,很有可能跟我們有十根手指有關。所謂【十進制】,就是:
數值的每一位都由0~9組成,共有10種狀態,逢十進一,為十進制
二進制在生活中可以說基本用不到,但是它是計算機底層的編碼組成,就是所謂的機器語言。同樣二進制的理解可以這樣:
數值的每一位都由0和1兩種狀態組成,逢二進一,為二進制
[二進制]->[十進制]
當然,二進制和十進制一樣,能夠表示正數也能夠表示負數,我們這里只討論基本的正整數的進制轉換,不涉及負數和小數。我們先來看一個十進制整數650分解到每一位后的表示方法:
650
=600+50+0 (百、十、個)
=6×100+5×10+0×1
=6×102+5×101+0×100(注意102表示10的2次方)
從上面的分解過程我們可以將每一位上的數歸納為以下公式
=m×10^n
:m表示當前位的值,n表示當前位右邊有n個數。
例如:百位6×10^2的理解就是當前位數值m是6,指數2表示當前百位右邊還有2個數。
十進制是以10為底的指數,同樣,二進制不同就是以2為底的指數,二進制的每一位表示公式如下:
=m×2^n
:m表示當前位的值,n表示當前位右邊有n個數。
根據以上公式我們可以試著來轉換一個二進制數值:
11011
=1×24+1×23+0×22+1×21+1×2^0
=24+23+21+20
=16+8+2+1
=27
從上面的計算我們可以看到,二進制只有0和1,所以我們一般計算的時候只要考慮有1的位,然后把他們求和就可以了。
[十進制]->[二進制]
十進制轉二進制其實不止一種方法,有除二取余法、湊數法等等,這里我們介紹[湊數法]。那什么是湊數法呢?我們知道在二進制中,每一位都是2的指數冪,所以我們可以將一個十進制數先拆開,湊成幾個2的指數的和,然后將拆開的數的指數填入對應二進制位。先來看個例子:
123
=64+32+16+8+2+1
=26+25+24+23+21+20
=2(7-1)+2(6-1)+2(5-1)+2(4-1)+2(2-1)+2(1-1)
=1111011
從上面可以看出,第7、6、5、4、2、1位上有1值,其余為0,所以我們將這些位填上1,第三位填入0,結果即為1111011。