- 單片機(jī)控制技術(shù)及應(yīng)用
- 紀(jì)娜
- 2010字
- 2020-11-27 17:29:25
1.3 計算機(jī)中數(shù)的表示形式
在現(xiàn)代微型機(jī)中,其內(nèi)部運(yùn)算器通常由一個補(bǔ)碼加法器、n位寄存器/計數(shù)器組和移位控制電路等組成,但它恰能進(jìn)行各種算術(shù)運(yùn)算和邏輯操作。這就是說,補(bǔ)碼加法器既能做加法又能將減法運(yùn)算變?yōu)榧臃▉碜?,從而大大簡化了運(yùn)算器內(nèi)部的電路設(shè)計。這應(yīng)歸功于人們長期以來對計算機(jī)中碼制的研究。
機(jī)器數(shù)是指數(shù)的符號和值均采用二進(jìn)制的表示形式。因此,機(jī)器數(shù)在定點和浮點機(jī)中的表示形式各不相同。為了方便起見,這里的機(jī)器數(shù)均指在定點整數(shù)機(jī)中的表示形式。即最高位是符號位(0表示正數(shù),1表示負(fù)數(shù)),其余位為數(shù)值位,小數(shù)點約定在數(shù)值位之后。在計算機(jī)中,機(jī)器數(shù)有原碼、反碼、補(bǔ)碼、變形原碼、變形反碼、變形補(bǔ)碼和移碼等多種形式。
1.3.1 機(jī)器數(shù)的原碼、反碼和補(bǔ)碼
原碼、反碼和補(bǔ)碼是機(jī)器數(shù)的三種基本形式,它和機(jī)器數(shù)的真值不同。機(jī)器數(shù)的真值定義為采用+和-表示的二進(jìn)制數(shù)符號,并非是真正的機(jī)器數(shù)。例如,+76的機(jī)器數(shù)真值為+1001100B,原碼形式為01001100B(最高位的0表示正數(shù));-76的真值為-1001100B,原碼為11001100B(最高位的1表示負(fù)數(shù))。
1.原碼
原碼表示法是機(jī)器數(shù)的一種簡單的表示法。這種表示法數(shù)的最高位為符號位(用0或1來表示),其余位為數(shù)值位,符號位的0表示該數(shù)為正數(shù),符號位為1表示它是負(fù)數(shù)。通常,一個數(shù)的原碼可以先把該數(shù)用方括號括起來,并在方括號右下角加個“原”字來標(biāo)記。設(shè)有一數(shù)為x,則原碼表示可記作[x]原。
【例1-6】 設(shè)X1=+1100B,X2=-1100B,請分別寫出它們在8位微機(jī)中的原碼。
解:其原碼記為
[X1]原=[00001100]原
[X2]原=[10001100]原
原碼表示數(shù)的范圍與二進(jìn)制位數(shù)有關(guān)。當(dāng)用8位二進(jìn)制來表示小數(shù)原碼時,其表示范圍為
最大值為0.1111111,其真值約為(0.99)D
最小值為1.1111111,其真值約為(-0.99)D
當(dāng)用8位二進(jìn)制來表示整數(shù)原碼時,其表示范圍為
最大值為01111111,其真值為(127)D
最小值為11111111,其真值為(-127)D
在原碼表示法中,對0有兩種表示形式:
[+0]原=00000000
[-0]原=10000000
2.反碼
在微型計算機(jī)中,二進(jìn)制數(shù)的反碼可由原碼得到,有正數(shù)的反碼和負(fù)數(shù)的反碼之分:正數(shù)的反碼和原碼相同;負(fù)數(shù)反碼的符號位和負(fù)數(shù)原碼的符號位相同,數(shù)值位是它的數(shù)值位的按位取反。反碼的標(biāo)記方法和原碼類似,只要在被括數(shù)方括號的右下角添加一個“反”字即可。設(shè)有一數(shù)為x,則反碼表示可記作[x]反。
【例1-7】 設(shè)X1=+1010110,X2=-1001010,請分別寫出它們在8位微機(jī)的原碼和反碼。
解:由于正數(shù)的反碼就是其原碼;負(fù)數(shù)的反碼是符號位不變,數(shù)值位是它的數(shù)值位的按位取反,所以有
[X1]原=01010110
[X1]反=[X1]原=01010110
[X2]原=11001010
[X2]反=10110101
反碼通常作為求補(bǔ)過程的中間形式,即在一個負(fù)數(shù)的反碼的末位上加1,就得到了該負(fù)數(shù)的補(bǔ)碼。
3.補(bǔ)碼
補(bǔ)碼的概念是在計算機(jī)中經(jīng)常會遇到的,二進(jìn)制數(shù)的補(bǔ)碼可由反碼得到,如果是正數(shù),則該機(jī)器數(shù)的補(bǔ)碼與原碼一樣;如果是負(fù)數(shù),則該機(jī)器數(shù)的補(bǔ)碼是對它的原碼(除符號位外)各位取反,并在末位加1而得到的。補(bǔ)碼的標(biāo)記方法和原碼、反碼類似,只要在被括數(shù)方括號的右下角添加一個“補(bǔ)”字即可。設(shè)有一數(shù)X,則X的補(bǔ)碼表示記作[X]補(bǔ)。
【例1-8】 設(shè)X1=+1010B,X2=-01010B,試分別寫出它們在8位微機(jī)中的原碼、反碼和補(bǔ)碼形式。
解:由原碼、反碼和補(bǔ)碼的定義得
[X1]原=00001010B[X2]原=10001010B
[X1]反=00001010B[X2]反=11110101B
[X1]補(bǔ)=00001010B[X2]補(bǔ)=11110110B
補(bǔ)碼的優(yōu)點是可以將減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,其符號位可以連同數(shù)值位一起運(yùn)算。這樣非常有利于計算機(jī)的實現(xiàn)。
【例1-9】 45H,-55H,用補(bǔ)碼運(yùn)算的方法求兩數(shù)之和。
解:[45H]補(bǔ)-[-55H]補(bǔ)=[-10H]補(bǔ)
1.3.2 計算機(jī)中二進(jìn)制數(shù)的單位表示
在計算機(jī)中使用的二進(jìn)制數(shù)共有3個單位,從小到大依次為位、字節(jié)和字。
1.位(bit)
這里所說的位是指二進(jìn)制數(shù)的位。位是數(shù)的最小單位,bit是位的英文名稱,讀作“比特”。
在計算機(jī)中位僅有0和1兩個數(shù)值,表示兩種狀態(tài)。
2.字節(jié)(Byte)
8位二進(jìn)制數(shù)稱為一個字節(jié),其英文名稱是Byte,在使用時常用大寫字母B表示。字節(jié)是最基本的數(shù)據(jù)單位,計算機(jī)中的數(shù)據(jù)、代碼、指令、地址多以字節(jié)為單位。
3.字(Word)
字是一臺計算機(jī)上所能并行處理的二進(jìn)制數(shù),字的位數(shù)(或長度)稱之為字長。字長必須是字節(jié)的整數(shù)倍。例如,MCS-51單片機(jī)字長為8位,MCS-96單片機(jī)字長為16位,還有32位、64位字長的計算機(jī)。
1.3.3 計算機(jī)使用二進(jìn)制數(shù)的原因
為什么在計算機(jī)中要使用二進(jìn)制數(shù)呢?其原因主要有以下幾點:
1.易于實現(xiàn)
在計算機(jī)中,數(shù)是用不同的物理狀態(tài)來表示的。因為二進(jìn)制數(shù)只有兩個數(shù)字0和1,用兩種物理狀態(tài)就可以表示出來。而兩種相反的物理狀態(tài)在技術(shù)上極易實現(xiàn)。例如,開關(guān)的接通與斷開,晶體管的導(dǎo)通與截止,電平的高低,脈沖的有無等。
對于這樣兩種截然相反的物理狀態(tài),不但易于實現(xiàn),而且狀態(tài)穩(wěn)定可靠。而兩種以上的物理狀態(tài),不但難以實現(xiàn),而且穩(wěn)定性也差。
2.運(yùn)算簡單
因為二進(jìn)制數(shù)只有兩個數(shù)字,所以對二進(jìn)制數(shù)的運(yùn)算比人們熟悉的十進(jìn)制數(shù)的運(yùn)算要簡單得多,而運(yùn)算簡單將有利于簡化計算機(jī)的電路結(jié)構(gòu)。
3.具有邏輯屬性
由于二進(jìn)制數(shù)的0和1正好與邏輯值的“假(F)”和“真(T)”相對應(yīng),因此可以使用二進(jìn)制數(shù)實現(xiàn)邏輯運(yùn)算,從而使邏輯代數(shù)運(yùn)算成為可能。
4.可靠性高
由于二進(jìn)制數(shù)用兩種截然相反的物理狀態(tài)表示,十分穩(wěn)定。因此二進(jìn)制數(shù)的處理、存儲和傳送都最為可靠。
- TinyML:基于TensorFlow Lite在Arduino和超低功耗微控制器上部署機(jī)器學(xué)習(xí)
- VxWorks設(shè)備驅(qū)動開發(fā)詳解
- 51單片機(jī)逆向?qū)W習(xí)實戰(zhàn)教程(電子設(shè)計與嵌入式開發(fā)實踐叢書)
- 單片機(jī)原理與應(yīng)用:基于Keil+Proteus
- 零起點學(xué)Proteus單片機(jī)仿真技術(shù)
- 嵌入式虛擬化技術(shù)與應(yīng)用:ACRN開源項目實踐
- AVR單片機(jī)實用程序設(shè)計
- 基于STM32的嵌入式系統(tǒng)設(shè)計與實踐
- 51單片機(jī)C語言編程一學(xué)就會
- 單片機(jī)原理與接口技術(shù)
- 51單片機(jī)工程師是怎樣煉成的:基于C語言+Proteus仿真
- 嵌入式系統(tǒng)與Qt程序開發(fā)
- C51單片機(jī)項目設(shè)計實踐教程(第2版)
- 案例解說組態(tài)軟件典型控制應(yīng)用
- 愛上單片機(jī)(第4版)