1. 程式人生 > >2 進位制轉換 | 二進位制、八進位制、十進位制、十六進位制整型常量之間的相互轉換

2 進位制轉換 | 二進位制、八進位制、十進位制、十六進位制整型常量之間的相互轉換

本篇文章只討論進位制轉換的一些基本問題。
因為不論是幾進位制,對於我們初學者來說如果想要深入理解都是不容易的事情,我一個小白也不會理解的很透徹,所以我現在只能把自己對於進位制轉換的一些想法記下來。

進位制就是進位制,是一種計數方式。
使用進位制的好處是可以使用有限的數字符號代表所有的數字。
我們最常使用的是十進位制,就是我們在平時生活中使用的。我們之所以使用十進位制的原因是我們有十根手指,原始社會方便比劃(當然這是我這麼胡扯的一句,具體的原因我也不知道) ,經過人類的完善,十進位制就廣為使用,流傳開來。
然而,我們是一群有理想,夢想改變世界的人(別說你小時候沒有過),我們現在學習程式設計,需要和計算機打交道。計算機雖然很厲害,但是要想學會十進位制還是比較吃力的事情,因為他沒有十根手指,只有通電,斷電兩種狀態。於是乎,就有人發明了計算機可以通過通斷電讀懂的二進位制,計算機是不用教十進位制了,我們學習程式設計的人員卻要學習二進位制了,當然這是最基本的基本功,下面是我個人學習進位制的一些理解。

首先了解一下二進位制、八進位制、十六進位制

二進位制:只用1和0兩個數字來表示,逢二進一(出現2就向前一位進1,類似於十進位制中,出現10向前一位進1)

八進位制:一種以8為基數的計數法,採用0—7八個數字,逢八進一。八進位制和二進位制可以相互對應,但是八進位制一位對應二進位制三位

十六進位制:由0-9,A-F組成,字母不區分大小寫。十六進位制和二進位制可以相互對應,十六進位制一位對應二進位制四位。為了區別不帶英文字母的十六進位制和十進位制的區別,十六進位制開頭一律採用0x或者0X。
十六與十進位制的對應關係是:0-9對應0-9;A-F對應10-15。

在瞭解進位制的轉換之前先理解一下“位權”的概念:
位就是數位,這個數在一個多位數中排第幾位,實際所表達的數值是不一樣的。

數碼所表示的數值等於該數碼本身乘以一個與它所在數位有關的常數,這個常數稱為“位權”,簡稱“權” 來自百度百科 位權

這句話的意思是說 同一個數在不同的數位上實際所表示的數是不一樣的。
例如十進位制中223 個位是3 權是1,十位是2 權是10,百位是2 權是一百
所以223 就是2*100+2*10+3*1=223

對於 N進位制數,整數部分第 i位的位權為N^(i-1) 來自百度百科 位權

上面的這句應該重點記憶並且理解。
i位上數字代表的真實含義(即我們日常使用的含義)=i位對應數字*i位的位權

二進位制轉換為其他進位制:
二進位制轉換十進位制
假設現在有一個二進位制數 0100 想要轉換為十進位制需要從右邊開始每一位*2的對應次冪 0*2的0次冪+0*2的1次冪+1*2的2次冪+0*2的三次冪=4
這裡提到的對應次冪就是位權的概念。

二進位制轉換十進位制規律:從右邊第一個數*2的0次冪,第二個*2的1次冪,以此類推,然後將結果相加就是十進位制數。
練習:二進位制轉換十進位制①0010101 ② 10110

二進位制轉換八進位制
例如 011010 上文提到 二進位制三位對應八進位制一位,所以需要先對二進位制進行分組,分組規則為三個一組。分組後011 010 然後像二進位制轉換十進位制一樣求得每組結果。結果為3 2 (是兩個數)。最後將得到的數字按照順序進行組合,就得到了八進位制數32
當不足三位的時候,直接補0

二進位制轉換十六進位制
二進位制轉換十六進位制方法類似二進位制轉換八進位制。不同地方在於轉換八進位制是三位一組,轉換十六進位制是四位一組
當不足四位的時候,直接補0

其他進位制轉換為二進位制:
十進位制轉換二進位制
十進位制轉換二進位制使用的是除二取餘,然後倒序排列,高位補零
例如8轉換為二進位制是 1000 如圖
這裡寫圖片描述
八進位制轉換二進位制
八進位制一位分為二進位制三位,然後按照順序排列
十六進位制轉換二進位制
十六進位制一位分為二進位制四位,然後按照順序排列

其他進位制間的相互轉換:
十進位制轉八進位制
十進位制轉十六進位制
十六進位制轉十進位制
十六進位制轉八進位制
八進位制轉十進位制
八進位制轉十六進位制

我通常是將二進位制作為媒介進行互相之間的轉換。

以上就是對二進位制最淺顯的認識