跳转至

進位制

在計算機中,除了二進制,比較常用的還有八進制和十六進制。

二進制

二進制是計算機內部運算中採用的進制,在這樣的進制系統下,只有 \(0,1\) 兩個數字,計算機內部的所有運算(包括位運算)都是在二進制的基礎上進行的。

但用二進制表示數字會讓數字過長,因此為了方便表示的需要,通常會把二進制數轉換為八進制或十六進制表示。

八進制

在八進制下,有 \(0,1,2,3,4,5,6,7\) 八個數字。

一般情況下,八進制數以 oxx(其中 o 為八進制的前綴,xx 代表八進制數)的形式來表示。

十六進制

在十六進制下,有 \(0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)\) 十六個數字。

十六進制與二進制相比,最大的優點就是表示的數字長度較短,一位十六進制數可以表示 4 位二進制數。

一般情況下,十六進制數以 0xdbf(其中 0x 為十六進制數的前綴)的形式來表示。

進制間的相互轉化

十進制轉二進制/八進制/十六進制

這裏以二進制為例來演示,其他進制的原理與其類似。

整數部分,把十進制數不斷執行除 2 操作,直至商數為 0。讀餘數從下讀到上,即是二進制的整數部分數字。小數部分,則用其乘 2,取其整數部分的結果,再用計算後的小數部分依此重複計算,算到小數部分全為 0 為止,之後從上到下,讀所有計算後整數部分的數字,即為二進制的小數部分數字。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
將33.25轉化為二進制數
整數部分:
33/2=16 ......1
16/2=8  ......0
8/2=4   ......0
4/2=2   ......0
2/2=1   ......0
1/2=0   ......1
小數部分:
0.25*2=0.5  0
0.5*2=1     1

\(33.25 = (100001.01)_2\)

二進制/八進制/十六進制轉十進制

還是以二進制為例。

二進制數轉換為十進制數,只需將每個位的值,乘以 \(2^i\) 次即可,其中 \(i\) 為當前位的位數,個位的位數為 0。

1
2
3
將11010.01(2)轉換為十進制數
11010.01(2)=1*2^4+1*2^3+0*2^2+1*2^1+0*2^0+0*2^(-1)+1*2(-2)
        =26.25

\((11010.01)_2 = (26.25)_{10}\)

二進制/八進制/十六進制間的相互轉換

一個八進制位可以用 3 個二進制位來表示(因為 \(2^3 =8\)),一個十六進制位可以用 4 個二進制位來表示(\(2^4 = 16\)),反之同理。