數制(Number System)是用一組固定的數字符號和一套統一的規則來表示數目的方法。若用R個基本符號來表示數目則稱爲R進制,R稱爲基數。例如二進制的基數爲2,數符有2個;十進制的基數爲10,數符有10個。函數
按進位的原則進行計算稱爲進位計數制。進位計數制中有兩個重要的概念:基數和位權post
基數是指用來表示數據的數碼的個數,超過(等於)此數後就要向相鄰高位進一。同一數碼處在數據的不一樣位置時所表明的數值是不一樣的,它所表明的實際值等於數字自己的值乘上一個肯定的與位置有關的係數,這個係數則稱爲位權,位權是以基數爲底的指數函數。例如,128.7=1×102+2×101+8×100+7×10-1。即「128.7」這個數值中的「1」的權值是102,「7」的權值就是10-1。spa
以十進制爲例3d
(356)10 = 3 × 102 + 5 × 101 + 6 × 100blog
基數:10 (356)10 = 3 × 102 + 5 × 101 + 6 × 100ci
位權:102 101 100 (356)10 = 3 × 102 + 5 × 101 + 6 × 100get
(位的)權:0 1 2 (356)10 = 3 × 102 + 5 × 101 + 6 × 100it
數碼:0、一、2 … 9 (356)10 = 3 × 102 + 5 × 101 + 6 × 100 io
在計算機中經常使用的進位計數制有二進制、八進制、十進制和十六進制。在平常生活中,一般使用十進制表示方法,而計算機內部採用的是二進制表示法,有時爲了簡化二進制數據的書寫,也採用八進制和十六進制表示法。爲了區別不一樣進制的數據,可在數的右下角標註。通常用B(Binary)或2表示二進制數,O(Octal)或8表示八進制數,H(Hexadecimal)或16表示十六進制數,D(Decimal)或10表示十進制。在本書中咱們用字母B、O、H、D表示法,若是省略進制字母,則默認爲十進制數。table
十進制 D decimal
二進制 B binary
八進制 O octal
十六進制 H hexadecimal
十進制(Decimal notation):用「0、一、二、三、四、五、六、七、八、9」十個數字表示。逢十進一。
表示方法:(5927)10或5927D
權表示法:(5927)10 = 5*103+9*102+2*101+7*100
2.1.1.1 整數N進制轉10進制
[位權相加法]
(10101)2=(1×24+0×23+1×22+0×21+1×20)10=(21)10
(10101)8=(1×84+0×83+1×82+0×81+1×80)10=(4161)10
(10101)16=(1×164+0×163+1×162+0×161+1×160)10=(65793)10
(BF3C)16=(11×163+15×162+3×161+12×160)10=(48956)10
二進制(Binary notation):用「0」和「1」兩個數字表示。逢二進一。
運算規則有:0 + 0 = 0 0 × 0 = 0
0 + 1 = 1 0 × 1 = 0
1 + 0 = 1 1 × 0 = 0
1 + 1 = 10 1 × 1 = 1
表示方法:(11011)2或11011B
權表示法:(11011)2 = 1×24+1×23+0×22+1×21+1×20
2.2.1.1 整數N進制轉2進制
[除法]
十進制轉二進制
(117)10=(111 0101)2
[降冪法]
十進制轉二進制
(117)10=(111 0101)2
117 - 26 = 117 - 64 = 53 大於0取1 a6=1 高位
53 - 25 = 53 - 32 = 21 大於0取1 a5=1
21 - 24 = 21 - 16 = 5 大於0取1 a4=1
5 - 23 = 5 - 8 = -3 小於0取0 a3=0
5 - 22 = 5 - 4 = 1 大於0取1 a2=1
1 - 21 = 1 - 2 = -1 小於0取0 a1=0
1 - 20 = 1 - 1 = 0 等於0取1 a0=1 低位
[取一分四法]
十六進制轉二進制
(A19C)16 =(1010 0001 1001 1100)2
A 1 9 C
1010 0001 1001 1100
2.2.1.2 小數N進制轉2進制
[乘法]
(0.8125)10=(0.1101)2
[降冪法]
(0.8125)10=(0.1101)2
0.8125 - 2-1 = 0.8125-0.5 = 0.3125 大於0取1 b1=1 高位
0.3125 - 2-2 = 0.3125-0.25 = 0.0625 大於0取1 b2=1
0.0625 - 2-3 = 0.0625-0.125 <0 小於0取1 b3=0
0.0625 - 2-4 = 0.0625 - 0.0625 = 0 等於0取1 b4=1 低位
八進制(Octal notation):用「0、一、二、三、四、五、六、7」八個數字表示。逢八進一。
表示方法:(5127)8或5127O
權表示法:(5127)8 = 5×83+1×82+2×81+7×80
十六進制(Hexdecimal notation):用「0、一、……九、A、B、C、D、E、F」十六個數字表示。逢十六進一。
表示方法:(5A0D7)16或5A0D7H
權表示法:(5A0D7)16 = 5*164+10*163+0*162+13*161+7*160
2.4.1.1整N進制轉16進制
[除法]
十進制轉十六進制
(48956)10 = (BF3C)16
[取四合一法]
從右向左湊四位
二進制轉十六進制
(0011 0101 1011 1111)2 = (35BF)16
0011 0101 1011 1111
3 5 B F
位權相加、降冪、乘法、除法、取四(三)合1、取一分四(三)
對各類進制數之間的轉換,咱們要掌握轉換的方法和規則,爲了便於理解咱們將進制的轉換分紅「二進制數 ↔ 八進制數、十六進制數」、「二進制數 ↔ 十進制數」兩大類。
① 二進制、八進制、十六進制之間的轉換
● 二進制數轉換爲八進制、十六進制數
因爲81=23(八進制數的一位等於二進制數的三位)、161=24(十六進制數的一位等於二進制數的四位)的關係,它們之間的轉換就變得很簡單。
其轉換規則是以小數點爲中心,左右「按位組合」先後不夠補0。即八進制是按三位組合,十六進制是按四位組合。
【例1-1】 把(11010111.01111)2轉換爲八進制數、十六進制數。
(11010111.01111)2=(011,010,111.011,110)2=(327.36)8
(11010111.01111)2=(1101,0111.0111,1000)2=(D7.78)16
● 八進制數、十六進制數轉換爲二進制數
其轉換規則還是以小數點爲中心,「按位展開」(八進制數的一位等於二進制數的三位、十六進制數的一位等於二進制數的四位),最後去掉先後的0。
【例1-2】把(327.36)八、(D7.78)16 轉換爲二進制數。
(327.36)8=(011,010,111.011,110)2=(11010111.01111)2
(D7.78)16=(1101,0111.0111,1000)2=(11010111.01111)2
② 二進制、八進制、十六進制與十進制之間的轉換
● 二進制數、八進制數、十六進制數轉換爲十進制數
二進制數、八進制數、十六進制數轉換爲十進制數,其轉換規則相同,是「按權展開相加」。同十進制的展開同樣,只是其權位不一樣而已。
● 十進制數轉換爲二進制數、八進制數、十六進制數
十進制數轉換成二進制數分兩種狀況進行,整數部分和小數部分,具體規則以下所示。
整數部分:除2取餘倒排。即採用除2取餘,直到商爲0,先得的餘數排在低位,後得的餘數排在高位。
小數部分:乘2取整順排。即採用乘2取整數,直到值爲0或達到精度要求,先得的整數排在高位,後得的整數排在低。
例:將(105.625)10轉換成二進制數。
n位X進制數可表示Xn個數
n位二進制數能夠表示2n個數
X進制數 × 基數X = X尾加0
3000H × 16D = 30000H
25 × 10 =250
二進制 | 十進制 | 十六進制 | 八進制 |
B | D | H | O |
0000 | 0 | 0 | 0 |
0001 | 1 | 1 | 1 |
0010 | 2 | 2 | 2 |
0011 | 3 | 3 | 3 |
0100 | 4 | 4 | 4 |
0101 | 5 | 5 | 5 |
0110 | 6 | 6 | 6 |
0111 | 7 | 7 | 7 |
1000 | 8 | 8 | 10 |
1001 | 9 | 9 | 11 |
1010 | 10 | A | 12 |
1011 | 11 | B | 13 |
1100 | 12 | C | 14 |
1101 | 13 | D | 15 |
1110 | 14 | E | 16 |
1111 | 15 | F | 17 |
10000 | 16 | 10 | 20 |
20=1 | 21=2 | 22=4 | 23=8 |
24=16 | 25=32 | 26=64 | 27=128 |
28=256 | 29=512 | 210=1024 | 211=2048 |
212=4096 | 213=8192 | 214=16384 | 215=32768 |
216=65536 | |||
160=1 | 161=16 | 162=256 | 163=4096 |
164=65536 | |||