2進位制 , 8進位制 , 10進位制 , 16進位制 , 介紹 及 相互轉換 及 快速轉換的方法

2020-08-10 11:54:17

爲什麼要使用進位制數
數據在計算機中的表示,最終以二進制的形式存在 , 就是各種 <駭客帝國>電影中那些 0101010… 的數位 ;

我們操作計算機 , 實際 就是 使用 程式 和 軟體 在 計算機上 各種讀寫數據,
如果我們直接操作二進制的話 , 面對這麼長的數進行思考或操作,沒有人會喜歡。

C,C++ 語言 沒有提供在程式碼直接寫二進制數的方法。
用16進位制或8進位制可以解決這個問題。
因爲,進位制越大,數的表達長度也就越短。

之所以 使用 16或8進位制,而不其它的,諸如9或20進位制 .

是因爲2、8、16,分別是2的1次方、3次方、4次方。這一點使得三種進位制之間可以非常直接地互相轉換 ;

8進位制或16進位制 既 縮短了二進制數,還能 保持了二進制數的表達特點。轉換還方便 .

進位制的介紹
進位制 : 是計算機中數據的一種表示方法。 N進位制的數可以用0~(N-1) 的數表示, 超過9的用字母A-F 表示 .

10進位制
先說 我們最 熟悉的 10進位制 , 就是 用 0~9 的數表示 , 逢 10 進 1 .

16進位制
如果是 16 進位制 , 它就是 由 0-9,A-F組成, 與10進位制的對應關係是:0-9 對應 0-9;A-F對應10-15;
字母不區分大小寫。

2進位制 和 8進位制
2進位制 由 0-1組成

8進位制 由 0-7組成

進位制的轉換公式
二進制轉換十進制
這裏寫圖片描述
八進制轉換十進制
這裏寫圖片描述
十六進制轉換十進制
這裏寫圖片描述
如何快速的進行 2進位制,10進位制,16進位制 的 相互轉換
先記住二進制 的8421
首先我們來看一個二進制數:1111,它是多少呢?
你可能還要這樣計算:1×2º+1×2¹+1×2²+1×2³=1×1+1×2+1×4+1×8=15。

我們必須直接記住1111每一位的權值,並且是從高位往低位記,:8、4、2、1。 即,最高位的權值爲2³=8,然後依次是 2²=4,2¹=2,2º=1。

記住8 4 2 1,對於任意一個4位元的二進制數,我們都可以很快算出它對應的10進位制值。

接下來我們練習 通過 8421 的方式 進行 快速的計算 , 2,10,16進位制的轉換
1111 = 8 + 4 + 2 + 1 = 15 =F
1110 = 8 + 4 + 2 + 0 = 14= E
1101 = 8 + 4 + 0 + 1 = 13= D
1100 = 8 + 4 + 0 + 0 = 12 =C
1011 = 8 + 0 + 2 + 1 = 11= B
1010 = 8 + 0 + 2 + 0 = 10 =A
1001 = 8 + 0 + 0 + 1 =9 =9
……
0001 = 0 + 0 + 0 + 1 = 1= 1
0000 = 0 + 0 + 0 + 0 = 0= 0

二進制數要轉換爲十六進制
二進制數要轉換爲十六進制,就是以4位元一段,分別轉換爲十六進制。
如(上行爲二制數,下面 下麪爲對應的十六進制):
1111 1101 , 1010 0101 , 1001 1011
F D , A 5 , 9 B

16進位制數轉換爲二進制數
反過來,當我們看到 FD時,如何迅速將此16進位制數轉換爲二進制數呢?
先轉換F:
看到F,我們需知道它是15(可能你還不熟悉A~F這五個數),然後15如何用8421湊呢?應該是8 + 4 + 2 + 1,所以四位全爲1 :1111。
接着轉換D
看到D,知道它是13,13如何用8421湊呢?應該是:8 + 4 + 1,即:1101。
所以,FD轉換爲二進制數,爲:1111 1101

十進制數轉換成2進位制
由於十六進制轉換成二進制相當直接,所以,我們需要將一個十進制數轉換成2進位制數時,也可以先轉換成16進位制,然後再轉換成2進位制。
比如,十進制數 1234轉換成二制數,如果要一直除以2,直接得到2進位制數,需要計算較多次數。所以我們可以先除以16,得到16進位制數:
被除數 計算過程 商 餘數
1234 1234/16 77 2
77 77/16 4 13 (D)
4 4/16 0 4
結果16進製爲:4D2
然後我們可直接寫出4D2的二進制形式:
0100
1101
0010
其中對映關係爲:
0100 – 4
1101 – D
0010 – 2

二進制數轉換成10進位制數
同樣,如果一個二進制數很長,我們需要將它轉換成10進位制數時,除了前面學過的方法是,我們還可以先將這個二進制轉換成16進位制,然後再轉換爲10進位制。
下面 下麪舉例一個int型別的二進制數:

01101101 11100101 10101111 00011011
我們按四位一組轉換爲16進位制:6D E5 AF 1B
十進制轉十六進制
採餘數定理分解,例如將487710轉成十六進制:

487710÷16=30481….14(E)
30481÷16=1905….1
1905÷16=119….1
119÷16=7….7
7÷16=0….7
這樣就計到487710(10)=7711E(16)