- 單片機原理與嵌入式系統設計
- 張齊 朱寧西 畢盛編著
- 2218字
- 2018-12-27 05:43:22
2.1 數制與編碼
數制是人們利用符號進行計數的科學方法。數制有很多種,在嵌入式系統中常使用的有二進制、十進制和十六進制。
數制所使用的數碼的個數稱為基,數制的每一位所具有的值稱為權。
2.1.1 進位計數制
1.十進制計數制
十進制的基為10,即它所使用的數碼為0~9,共10個數字。十進制各位的權是以10為底的冪,每個數因所處位置不同,其值是不同的,每一位數是其右邊相鄰那位數的10倍。
計數規律:逢10進1。
任意一個十進制數(S)10,可以表示為
(S)10=kn-110n-1+kn-210n-2+…+k0100+k-110-1+k-210-2+…+k-m-110-m-1
式中,ki是0~9中的任意一個數字,m、n是正整數,10是十進制的基數。
【例2.1】 (2001.9)10=2×103+0×102+0×101+1×100+9×10-1
十進制在書寫中通常可省去下標,如2001.9即表示(2001.9)10。
十進制是日常生活中常用的數制,人機交互也常采用十進制。
2.二進制計數制
二進制的基為2,即它所使用的數碼為0、1,共兩個數字。二進制各位的權是以2為底的冪,每個數因所處位置不同,其值是不同的,每一位數是其右邊相鄰那位數的2倍。
計數規律:逢2進1。
任意一個二進制數(S)2可以表示成
(S)2=kn-12n-1+kn-22n-2+…+k020+k-12-1+k-22-2+…+k-m-12-m-1
式中,ki只能取0或1,m、n是正整數,2是二進制的基數。
【例2.2】 (1101.101)2=l×23+1×22+0×21+1×20+1×2-1+0×2-2+1×2-3
二進制數只有兩個數碼,即0和1,在電子計算機中容易實現。例如,可以用高電平表示1,低電平表示0,或者用晶體管截止時的輸出表示1,導通時的輸出表示0。所以,采用二進制就可以利用電路進行計數工作。二進制數的運算規則類似于十進制,加法為逢2進1,減法為借1為2。利用加法和減法就可以進行乘法、除法及其他數值運算。
由于二進制位數太長,不易記憶和書寫,所以人們又提出了十六進制的書寫形式。
3.十六進制計數制
十六進制的基為16,即它所使用的數碼為0~9和A~F,共16個數字。十六進制各位的權是以16為底的冪,每個數因所處位置不同,其值是不同的,每一位數是其右邊相鄰那位數的16倍。
計數規律:逢16進1。
任意一個十六進制數(S)16可以表示成
(S)16=kn-116n-1+kn-216n-2+…+k0160+k-116-1+k-216-2+…+k-m-116-m-1
式中,ki可取0,1,2,…,9,A,B,C,D,E,F這16個數碼和字母之一,用A~F表示10~15;m、n是正整數;16為十六進制的基數。
【例2.3】 (8AE6)16=8×163+A×162+E×161+6×160
十六進制數在書寫中可使用另一種表示方式,如(8AE6)16可表示為8AE6H。
2.1.2 進位計數制的相互轉換
人們習慣使用的是十進制數,計算機采用的是二進制數,人們書寫時又多采用十六進制數,因此,必然產生各種進位計數制之間的相互轉換問題。
1.十進制數轉換成十六進制數
一個十進制整數轉換成十六進制數時,按除16取余的方法進行。
【例2.4】
轉換結果=(725)10=(2D5)16。
一個十進制小數轉換成十六進制小數時,可按乘16取整的方法進行。
【例2.5】
轉換結果=(0.7875)10=(0.C99)16。
注意:小數轉換不一定能算盡,只需算到一定精度的位數即可,因此可能會產生一些誤差,但當位數較多時,這個誤差就很小了。
如果一個十進制數既有整數部分又有小數部分,可將整數部分和小數部分分別進行十六進制數的等值轉換,然后合并即可得到結果。
2.十六進制數轉換成十進制數
十六進制數轉換成等值的十進制數時,可用按權相加的方法進行。
【例2.6】
(1C4.68)16=1×162+C×161+4×160+6×16-1+8×16-2=256+192+4+0.375+0.03125=(452.40625)10
3.十六進制數與二進制數的轉換
一位十六進制數表示的數值恰好相當于4位二進制數表示的數值,因此彼此之間的轉換極為方便,只要從小數點開始分別向左右展開即可。
【例2.7】
(3AB4)16=(0011101010110100)2
(11111101.01001111)2=(FD.4F)16
可見,在計算機中用十六進制書寫要比用二進制書寫簡短,而且用十六進制表示的數據信息很容易轉換成二進制表示。這就是普遍使用十六進制數的原因。
當十進制數轉換成二進制數時,可采用十六進制數作為中間過渡。
2.1.3 數碼和字符的代碼表示
1.術語
數碼:代表一個確切的數字,如二進制數、八進制數等。
代碼:特定的二進制數碼組,是不同信號的代號,不一定有數的意義。
編碼:n位二進制數可以組合成2n個不同的信息,給每個信息規定一個具體碼組,這個過程叫做編碼。
2.二進制碼
自然碼:有權碼,每位代碼都有固定權值,結構形式與二進制數完全相同。
循環碼:無權碼,每位代碼無固定權值,任何相鄰的兩個碼組中,僅有一位代碼不同。
自然二進制碼和循環二進制碼如表2.1所示。
表2.1 兩種4位二進制編碼
3.二-十進制碼(BCD碼)
BCD碼是用二進制代碼對十進制數進行編碼,它既具有二進制碼的形式(4位二進制碼),又有十進制數的特點(每4位二進制碼是1位十進制數)。BCD碼有多種形式,單片機系統軟件中常常用到8421BCD碼,編碼值與字符0~9的低4位碼相同,易于實現人機交互。
【例2.8】
(1999)10=(0001100110011001)BCD
(0110100001000000)BCD=(6840)10
4.字母與字符的編碼
嵌入式計算機系統不僅能夠對數值數據進行處理,還能夠對文本和其他非數值數據信息進行處理。計算機中這些非數值數據如字母、字符等都要用特定的二進制碼表示。字母與字符用二進制碼表示的方法很多,目前在計算機中普遍采用的是ASCII碼(American Standard Code for Information Interchange,美國標準信息交換碼)。常見的ASCII碼,采用7位二進制數(00H~7FH)表示一個字符,包括10個十進制數碼0~9,52個英文大、小寫字母(A~Z,a~z),32個專用符號和32個控制符號,共計128個字符。在128個字符中有96個是可打印字符,32個是不可打印的字符。ASCII字符編碼如表2.2所示。
表2.2 ASCII碼字符表
在計算機的存儲單元中,一個ASCII碼值占一個字節(8個二進制位),低7位(b6~b0)表示不同的字符代碼,其最高位(b7)用做奇偶校驗位。
除標準ASCII碼外,有的公司通過使用字節最高位(b7)將ASCII碼擴展到256個,增加80H~0FFH共128個字符,一般稱為“擴充字符”,并非標準的ASCII碼。
- 高效能辦公必修課:Word圖文處理
- 三菱FX3U/5U PLC從入門到精通
- LabVIEW虛擬儀器從入門到測控應用130例
- Learning Microsoft Azure Storage
- 自動控制原理
- 程序設計語言與編譯
- MicroPython Projects
- Photoshop CS3圖層、通道、蒙版深度剖析寶典
- Apache Superset Quick Start Guide
- Implementing AWS:Design,Build,and Manage your Infrastructure
- 突破,Objective-C開發速學手冊
- 電氣控制與PLC原理及應用(歐姆龍機型)
- Learning ServiceNow
- 網絡存儲·數據備份與還原
- C#求職寶典