數字系統(數碼系統)定義了如何用獨特的符號來表示一個數字。
數字系統分為位置化數字系統和非位置化數字系統。
位置化數字系統
在位置化數字系統中,數字中符號所占據的位置決定了其表示的值。
位置化數字系統的表示
±(Sk-1Sk-2…S3S2S1S0.S-1S-2S-3…S-L)b;
位置化數字系統的(十進制)值
N=±Sk-1×bk-1+Sk-2×bk-2+…+S3×b3+S2×b2+S1×b1+S0×b0+S-1×b-1+S-2×b-2+S-3×b-3+…+S-L×b-L;
其中:
- S是一套符號集。
- b是基數。
- 從小數點開始,b的幕可以從一個方向由0到k-l,還可以從另一個方向由-1到-L;
- 即b的非負數次幕與該數字的整數部分有關,而b的負數次冪與該數字的小數部分有關;
- ±符號表示該數字可正可負。
十進制系統(Decimal)
- 基數b=10;
- 符號集S={0,1,2,3,4,5,6,7,8,9};
- 整數值表示: N = ±Sk-1×10k-1+Sk-2×10k-2+…+S3×103+S2×102+S1×101+S0×100;
- 實數值表示: N = ±Sk-1×10k-1+Sk-2×10k-2+…+S3×103+S2×102+S1×101+S0×100+S-1×10-1+S-2×10-2+S-3×10-3+…+S-L×10-L;
二進制系統(Binary)
- 基數b=2;
- 符號集S={0,1};
- 整數值表示: N = ±Sk-1×2k-1+Sk-2×2k-2+…+S3×23+S2×22+S1×21+S0×20;
- 實數值表示: N = ±Sk-1×2k-1+Sk-2×2k-2+…+S3×23+S2×22+S1×21+S0×20+S-1×2-1+S-2×2-2+S-3×2-3+…+S-L×2-L;
二進制的部分權值
權 | (值)2 | (值)10 |
20 | 1 | 1 |
21 | 10 | 2 |
22 | 100 | 4 |
23 | 1000 | 8 |
24 | 10000 | 16 |
25 | 100000 | 32 |
26 | 1000000 | 64 |
27 | 10000000 | 128 |
28 | 100000000 | 256 |
29 | 1000000000 | 512 |
210 | 10000000000 | 1024 |
十六進制系統(Hexadecimal)
- 基數b=16;
- 符號集S={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F};
- A,B,C,D,E,F分別等於10,11,12,13,14,15;
- 整數值表示: N = ±Sk-1×16k-1+Sk-2×16k-2+…+S3×163+S2×162+S1×161+S0×160;
- 實數值表示:盡管一個實數可以用十六進制系統表示,但並不常見。
八進制系統(Octal)
- 基數b=8;
- 符號集S={0,1,2,3,4,5,6,7};
- 整數值表示: N = ±Sk-1×8k-1+Sk-2×8k-2+…+S3×83+S2×82+S1×81+S0×80;
- 實數值表示:盡管一個實數可以用八進制系統表示,但並不常見。
四種進位計數制小結
進位計數制 | 形式表示 | 基數 | 符號集 | Example | Or Example |
十進制 | D | 10 | 0,1,2,3,4,5,6,7,8,9 | (123.12) 10 | (123.12)D |
二級制 | B | 2 | 0,1 | (1001.11)2 | (1001.11)B |
八進制 | O | 8 | 0,1,2,3,4,5,6,7 | (156.23) 8 | (156.23)O |
十六進制 | H | 16 | 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F | (A2C.A1)16 | (A2C.A1)H |
比較四種進位計數制表示同一數字
十進制 | 二進制 | 八進制 | 十六進制 |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
數字 15 在十進制中使用2個數碼,在二進制中使用4個數碼,在八進制中使用2個數碼,在十六進制中僅僅使用1個數碼;十六進制表示法顯然是最短的。即在采用不同的數制表示同一個數時,基數越大,則使用的位數越小。所以在程序的書寫中,一般采用八進制或十六進制表示數據。
進制轉換——R進制轉換為十進制
將R進制數按權展開求和即可等到相應的十進制數。
Example:將這三個數轉換為十進制數值。
(10110)B = (1×24+0×23+1×22+1×21+0×20)D
= (16+0+4+2+0)D
= (22)D
(234)O = (2×82+3×81+4×80)D
= (128+24+4)D
= (156)D
(234)H = (2×162+3×161+4×160)D
= (512+48+4)D
= (564)D
進制轉換——R進制轉換為十進制
整數部分:
將十進制整數轉換為R進制數,采用“除R取余法”,即將十進制整數連續地除以R取余數,直到商為0。將最后一個余數最為R進制數的第一位,將倒是第二個余數作為R進制數的第二位,依次類推得到R進制數的整數部分。
小數部分:
小數部分的轉換采用“乘R取整法”,即將十進制小數部分不斷乘以R取整,直到小數部分為0或達到要求的精度(當小數部分永遠不會達到0時)。取得的整數的排列次序與取得順序一致,即首次取得的整數作為R進制數小數部分的第一位,最后一次取得的整數作為R進制數小數部分的最后一位。
Example1:
(225.8125)D → 二進制數
所以 (225.8125)D = (11100001.1101)B
Example2:
將十進制數225.15轉換八進制數。
所以(225.15)D = (341.114)O。
進制轉換——八進制十六進制之間的轉換
計算及內部數據的表示和運算非常適合二進制,但位數過長 。所以在書寫程序和數據時,經常采用八進制或十六進制,這兩種進位計數制相比於二進制位數要簡短得多。
八進制與十六進制之間的轉換依賴於二進制、八進制、十六進制之間的特殊關系。
81 = 23; 1位八進制數相當於3位二進制數。
161 = 24; 1位十六進制數相當於4位二進制數。
二進制數、八進制數、十六進制數之間的關系表
八進制數 | 對應二進制數 | 十六進制數 | 對應二進制數 | 十六進制數 | 對應二進制數 |
0 | 000 | 0 | 0000 | 8 | 1000 |
1 | 001 | 1 | 0001 | 9 | 1001 |
2 | 010 | 2 | 0010 | A | 1010 |
3 | 011 | 3 | 0011 | B | 1011 |
4 | 100 | 4 | 0100 | C | 1100 |
5 | 101 | 5 | 0101 | D | 1101 |
6 | 110 | 6 | 0110 | E | 1110 |
7 | 111 | 7 | 0111 | F | 1111 |
根據這種對應關系。
將二進制轉換為八進制時,從小數點開始分別向左右兩邊分組,每3位為一組,兩頭不足3位補0。再分別進行轉換。
將二進制轉換為十六進制時,從小數點開始分別向左右兩邊分組,每4位為一組,兩頭不足4位補0。再分別進行轉換。
Example1:將二進制數(10101011.110101)B分別轉換為八進制數和十六進制數。
(10101011.110101)B = (010 101 011 • 110 101)B = (253.65)O {010=2,101=5,011=3,110=6,101=5};
(10101011.110101)B = (1010 1011 • 1101 0100)B = (AB.D4)H {1010=A,1011=B,1101D,0100=4};
同樣的,將八進制數或十六進制數轉換為二進制數,將八進制數的1位轉換為二進制數的3位,將十六進制數的1位轉換為二進制數的4位即可。
八進制數與十六進制數之間的轉換將二進制數作為中間量來完成。
非位置化數字系統(了解即可)
如羅馬數字
1-Ⅰ、2-Ⅱ、3-Ⅲ、4-Ⅳ、5-Ⅴ、6-Ⅵ、7-Ⅶ、8-Ⅷ、9-Ⅸ。
10-Ⅹ、11-Ⅺ、12-Ⅻ、13-XIII、14-XIV、15-XV、16-XVI、17-XVII、18-XVIII、19-XIX、20-XX