數制及進製轉換

2021-09-27 23:45:37 字數 3404 閱讀 5782

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

基本概念:

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

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

位權:數制中每一固定位置對應的單位值(數制中某一位上的1所表示的數值的大小(所處位置的價值))。例如:對於十進位制中數字 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) 從左向右每三位拆解成對應的二進位制數

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

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

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

進製計數制及其轉換

資料是對客觀事物的符號表示。資訊是各種事物變化和特徵的反映,是事物之間相互作用的表徵。資料處理之後產生的結果為資訊。計算機內部使用二進位制表示各種資訊。計算機中資料的最小單位是位,儲存容量的基本單位是位元組。8個二進位制位稱為1個位元組,此外還有kb,mb,gb,tb。位 bit 位是度量資料的最小...

strtol及數制轉換

函式及其引數 long int strtol const char nptr,char endptr,int base 編輯本段 函式的解釋說明 這個函式會將引數nptr字串根據引數base來轉換成長整型數。引數base範圍從2至36,或0。參 數base代表採的進製方式,如base值為10則採用1...

牛客網 數制轉換 任意進製)

題目描述 求任意兩個不同進製非負整數的轉換 2進製 16進製制 所給整數在long所能表達的範圍之內。不同進製的表示符號為 0,1,9,a,b,f 或者 0,1,9,a,b,f 輸入描述 輸入只有一行,包含三個整數a,n,b。a表示其後的n 是a進製整數,b表示欲將a進製整數n轉換成b進製整數。a,...