官术网_书友最值得收藏!

2.1 數制與編碼

數制是人們利用符號進行計數的科學方法。數制有很多種,在嵌入式系統中常使用的有二進制、十進制和十六進制。

數制所使用的數碼的個數稱為基,數制的每一位所具有的值稱為權。

2.1.1 進位計數制

1.十進制計數制

十進制的基為10,即它所使用的數碼為0~9,共10個數字。十進制各位的權是以10為底的冪,每個數因所處位置不同,其值是不同的,每一位數是其右邊相鄰那位數的10倍。

計數規律:逢10進1。

任意一個十進制數(S10,可以表示為

S10=kn-110n-1+kn-210n-2+…+k0100+k-110-1+k-210-2+…+k-m-110-m-1

式中,ki是0~9中的任意一個數字,mn是正整數,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。

任意一個二進制數(S2可以表示成

S2=kn-12n-1+kn-22n-2+…+k020+k-12-1+k-22-2+…+k-m-12-m-1

式中,ki只能取0或1,mn是正整數,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。

任意一個十六進制數(S16可以表示成

S16=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;mn是正整數;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碼。

主站蜘蛛池模板: 郯城县| 韶山市| 阿拉尔市| 巍山| 清徐县| 樟树市| 犍为县| 湾仔区| 中西区| 楚雄市| 上林县| 肇州县| 习水县| 岱山县| 丽江市| 奉贤区| 涿鹿县| 大邑县| 沽源县| 改则县| 阳信县| 唐山市| 鹤峰县| 西安市| 民和| 红原县| 依安县| 千阳县| 延吉市| 文登市| 永平县| 吕梁市| 蒙城县| 峨边| 天祝| 格尔木市| 天长市| 闸北区| 伊金霍洛旗| 淳安县| 石楼县|