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

1.1.3 單片機數據處理基礎

1.數制

數制是按進位原則進行計數的一種方法,即進位計數制。數制有兩個要素:計數符號和進位原則。

(1)十進制數

1)計數符號:0~9;書寫時用D作后綴(一般省略)。

2)進位原則:逢十進一。

(2)二進制數

1)計數符號:0、1;書寫時用B作后綴。

2)進位原則:逢二進一。

(3)十六進制數

1)計數符號:0~9、A、B、C、D、E、F;書寫時用H作后綴。

2)進位原則:逢十六進一。

2.數制之間的相互轉換

常用數制之間的對應關系見表1-1。

表1-1 常用數制之間的對應關系

(1)二進制及其他進制轉換為十進制數

二進制、八進制和十六進制轉換為十進制的方法是:將二進制、八進制或十六進制寫成按權展開式,然后各項相加,則得相應的十進制數,即

D=∑Ki Ni

其中,Ki為對應進制各位的數值;N為對應的進制;Ni表示對應位數的權值,i在小數點往前依次為0、1、2、…、n-1,在小數點往后依次為-1、-2、…、-n

例1-1】把二進制數10101.1011B轉換成相應的十進制數。

:10101.1011B=1×24+0×23+1×22+0×21+1×20+1×2-1+1×2-3+1×2-4

=21.6875D

(2)十進制數轉換為二進制數

十進制數據轉換為二進制數是將整數部分按“除2倒讀取余”的原則進行轉換;小數部分按“乘2順讀取整”的原則進行轉換。

例1-2】把十進制數15.625轉換為對應的二進制數。

所以十進制數15.625=1111.101B。

(3)二進制數與十六進制(八進制)數相互轉換

由表1-1可見,每4位(3位)二進制數可以完整地表示1位十六進制(八進制)數。所以,二進制數轉換成十六進制(八進制)數時,從小數點開始,分別向左、向右每4位(3位)二進制數劃為一組,整數部分不足4位(3位)前面添0,小數部分不足4位(3位)后面添0,然后每一組直接寫出對應的十六進制(八進制)數,小數點位置保持不變。

十六進制(八進制)數轉換成二進制數時,只要按相反的方法,每位十六進制(八進制)數寫出4位(3位)二進制數。

例1-3】把二進制數1111000111.100101B轉換為十六進制數和八進制數。

:1111000111.100101B=0011 1100 0111.1001 0100B=3C7.94H

1111000111.100101B=001 111 000 111.100 101B=1707.45O

(4)十六進制(八進制)數和十進制數相互轉換

可以用前面介紹的D=∑KiNi進行轉換,但一般通過先轉換成二進制,再轉換成其他進制的方法比較簡便。

3.二進制數的算術運算

(1)加法運算

加法規則:0+0=0;0+1=1;1+0=1;1+1=10。

例1-4】求0111B與0110B之和。

∴0111B+0110B=1101B

(2)減法運算

減法規則:0-0=0;1-0=1;1-1=0;0-1=1(借位)。

例1-5】求1110B-0101B=?

∴1110B-0101B=1001B

(3)乘法運算

在計算機系統中,都是將乘法作為連續的加法來執行。其中,自身相加的數為被乘數,相加的次數為乘數。

例1-6】求1101B×11B=?

:1101B×11B=1101B+1101B+1101B=100111B

(4)除法運算

除法可以歸結為連續的減法,即從被除數中不斷地減去除數,所減的次數是相除的商,而剩下的值則是相除的余數。

4.二進制數的邏輯運算

(1)邏輯與運算

運算規則:有0為0,全1為1,即0∧0=0;0∧1=0;1∧0=0;1∧1=1。

(2)邏輯或運算

運算規則:有1為1,全0為0,即0∨0=0;0∨1=1;1∨0=1;1∨1=1。

(3)邏輯異或運算

運算規則:相同為0,不同為1,即0⊕0=0;0⊕1=1;1⊕0=1;1⊕1=0。

(4)邏輯非運算

運算規則:取反,即0’=1;1’=0。

注意,邏輯運算都是按對應位的數據運算,不存在算術運算的進位或借位。

5.計算機中數的表示方法

在計算機中,為了運算的方便,對于帶符號數,數的最高位用來表示正、負數。最高位為“0”表示正數,最高位為“1”表示負數,如圖1-1所示。

圖1-1 機器數的表示

一個帶“+”“-”號的數為真值,數碼化了的帶符號數為機器數。

一個機器數的表示方法有原碼、反碼及補碼三種。

1)原碼:用最高位表示符號位,后面各位表示該數的絕對值。

例1-7】(+69)原碼=01000101B=45H

(-69)原碼=11000101B=C5H

2)反碼:正數的反碼與原碼相同;負數的反碼是在其原碼的基礎上,保留符號位不變,數值位各位取反。

例1-8】(+69)反碼=01000101B=45H

(-69)反碼=10111010B=BAH

3)補碼:正數的補碼與原碼、反碼相同;負數的補碼是在其反碼的基礎上加1。

例1-9】(+69)補碼=0100 0101B=45H

(-69)補碼=(-69)反碼+1=BAH+1=BBH

6.補碼的運算

補碼的運算規則為[X+Y]=[X]+[Y];[X-Y]=[X]+[-Y]。所以減法運算可以轉換為加法運算,而乘法用連續加、除法用連續減,也都能轉換成加法運算。這樣,二進制數的加、減、乘、除都可以轉換為加法運算,通過運算器中的累加器實現。

例1-10】25-32=25+(-32),因為[25]補=00011001B,[-32]補=11100000B

所以

對結果求補得到原碼為10000111B,即25-32=-7。

7.十進制數編碼

十進制數是人們習慣使用的數制,計算機中提供了十進制數編碼,就是用二進制編碼表示十進制數。根據不同應用,有多種編碼方案,如BCD碼、余3碼、2421碼及格雷碼等,其中BCD碼是最常用的編碼,它用4位二進制位按8、4、2、1的權值相加來表示一個十進制數,見表1-2。

表1-2 BCD碼表

BCD碼分為壓縮BCD碼和非壓縮BCD碼,壓縮的BCD碼用1字節表示2位BCD碼(高4位、低4位各代表1個BCD碼);非壓縮BCD碼用1字節表示1位BCD碼(低4位表示BCD碼,高4位填0)。

8.字符編碼

計算機需要處理大量的字符數據,而這些字符在計算機中也是用二進制編碼表示。這種編碼常用的是美國標準信息交換碼(American Standard Code for Information Interchanger,ASCII),共定義了128個字符,其中33個字符是控制字符,用來控制信息的傳輸和設備的操作,其他95個是可顯示的字符。常用字符的ASCII碼見表1-3。

表1-3 常用字符ASCII(十六進制)表

主站蜘蛛池模板: 临沭县| 吴川市| 龙山县| 德阳市| 房山区| 义乌市| 三穗县| 两当县| 大港区| 青海省| 昌江| 琼结县| 靖西县| 德兴市| 霸州市| 墨脱县| 上思县| 鄢陵县| 桑植县| 内乡县| 九龙坡区| 平南县| 无为县| 崇礼县| 宜阳县| 天镇县| 牡丹江市| 洪洞县| 巴林左旗| 龙山县| 弋阳县| 余庆县| 家居| 安乡县| 西峡县| 汶上县| 彭山县| 安陆市| 沙坪坝区| 谢通门县| 华坪县|