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


為什么要使用進制數

數據在計算機中的表示,最終以二進制的形式存在 , 就是各種 <黑客帝國>電影中那些 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組成

進制的轉換公式

  1. 二進制轉換十進制
         
  2. 八進制轉換十進制
  3. 十六進制轉換十進制

     

如何快速的進行 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)

 

此文章為轉載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM