數制及進制轉換

數制:也稱爲“計數制”,是用一組固定的符號和統一的規則來表示數值的方法。任何一個數制都包含兩個基本要素:基數位權

基本概念:

數碼:數制中表示基本數值大小的不同數字符號。例如:十進制中有10個數碼:0、1、2、3、4、5、6、7、8、9

基數:數制中所使用數碼的個數。例如:十進制使用的數碼個數爲 0-9 ,一共 10 個數碼,所以十進制的基數爲 10

位權:數制中每一固定位置對應的單位值(數制中某一位上的 所表示的數值的大小(所處位置的價值))。例如:對於十進制中數字 123,1 的位權是 100,2 的位權是 10,3 的位權是 1,對於 N進制數,整數部分第 i 位的位權爲 N^(i-1) ,而小數部分第 j 位的位權爲 N^-j。

十進制:逢 10 進 1
數碼:0、1、2、3、4、5、6、7、8、9
基數:10
位權:對於 10.23 來說,1 的位權爲 10 (10^1),0 的位權爲 1 (10^0),2 的位權爲 0.1 (10^-1),3 的位權爲 0.01 (10^-2)

二進制:逢 2 進 1
數碼:0、1
基數:2
位權:對於 10.11 來說,從左向右看,1 的位權 2 (2^1), 0 的位權 1 (2^0),1 的位權 0.5 (2^-1),1 的位權 0.25 (2^-2)

十六進制:逢 16 進 1
數碼:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E
基數:16
位權:我這裏就不囉嗦了,跟上面的類似,其中重點說明一下,A 表示的是數值爲 10,B 爲11,C 爲12,D 爲13,E 爲 14

解釋了這麼多的概念有啥用呢?

對於十進制數字 123 來說,它的數值大小可以表示爲:1 * 100 + 2 * 10 + 3 * 1 = 1 * 10^2 + 2 * 10^1 + 3 * 10^0

那麼有人會問了,如果是小數呢?

對於十進制數字 0.25 來說,它的數值大小可以表示爲:2 * 0.1 + 5 * 0.01 = 2 * 10^-1 + 5 * 10^-2 = 1 / (2 * 10^1 + 5 * 10^0)

通過上述表示,我們可以得到一個結論,一個數的實際數值 =(各個位置上的數值 * 對應位置的位權)之和

是不是很神奇呀? 那麼我們知道了十進制的表示方法,對於二進制我們怎麼處理是不是也很清楚了呢?

對於二進制數字 110 來說,它的數值大小可以表示爲:1 * 4 + 1 * 2 + 0 * 1 = 1 * 2^2 + 1 * 2^1 + 0 * 2^0 

那麼知道了這些有啥用呢?我們可以做進制轉換呀!!!

二進制轉換爲十進制

1100.11 = 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2^0 + 1 * 2^-1 + 1 * 2^-2 = 8 + 4 + 0.5 + 0.25 = 12.75

十進制轉換爲二進制

100.25
先轉整數部分
100 = 1 * 2^6 + 1 * 2^5 + 0 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2^0 = 1100100(2)
再轉小數部分
0.25 = 0 * 2^-1 + 1 * 2^-2 = 0.01(2)
所以 100.25 = 1100100.01(2)
這個是如何計算的呢?

100 % 2 = 0            100 / 2 = 50           50 % 2 = 0         
50 / 2     = 25          25 % 2 = 1               25 / 2 = 12
12   % 2 = 0              12 / 2 = 6               6 % 2 = 0           
      6 / 2 = 3              3 % 2 = 1                 3 / 2 = 1
1     % 2 = 1                1 / 2 = 0(結束)
所以 100 =   1100100(就是通過 % 運算後的結果,倒着書寫下來)
0.25 * 2 = 0.5            0.5 % 2 = 0           0.5 * 2 = 1         1 % 2 = 1(結束)
所以 0.25 = 0.01(通過 % 運算後的結果,正着書寫下來)
至於這個原理大家就應該很清楚是怎麼一回事了?

解釋一下:

100 = 1 * 2^6 + 1 * 2^5 + 0 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2^0

% 2 得到的是最後一個 0 * 2^0 項的係數 0
再用 100 / 2 就相當於降冪操作,將上述的表達式每個都進行降冪,就是 2^6 變爲 2^5,然後再反覆利用 % 運算和 / 運算就能得到每項的係數,然後把係數對應倒着寫出來就得到了對應的二進制

0.25 = 0 * 2^-1 + 1 * 2^-2

* 2 進行升冪操作,此時 2^-1 變爲 2^0,再進行 % 運算,得到 0 * 2^-1 項的係數 0,反覆利用 * 運算 和 % 運算就能得到每項的係數,然後把係數對應正着寫出來就得到了對應的二進制          

二進制轉八進制

111 010(2) = 72(8) 後右向左每三位構成一個八進制數

八進制轉二進制

72(8) = 111 010(2) 從左向右每三位拆解成對應的二進制數

二進制轉十六進制十六進制轉二進制每四位進行轉換

八進制轉十六進制通過先八進制轉二進制,再二進制轉十六進制

任意進制轉換,可以先轉十進制,再通過十進制再轉換!!!

感謝大家的瀏覽,如果有什麼不清楚的地方可以在下方評論,我看到會一一作出回覆,嘻嘻(*^_^*)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章