




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2章計算機中的數制和編碼2.1無符號數的表示及運算2.2帶符號數的表示及運算2.3信息的編碼2.4數的定點與浮點表示法2.1
無符號數的表示及運算
2.1.1
無符號數的表示方法
1.十進制數的表示方法十進制計數法的特點是:①逢十進一;②使用10個數字符號(0
9)的不同組合來表示一個十進制數③以后綴D或d表示十進制數(Decimal),但該后綴可以省略
任何一個十進制數可表示為:式中:m表示小數位的位數,n表示整數位的位數,Di為第i位上的數符(可以是0
9十個數字符號中的任一個)。例2.1
138.5(D)=
2.
二進制數的表示方法二進制計數法的特點是:①逢二進一;②使用2個數字符號(0,1)的不同組合來表示一個二進制數;③以后綴B或b表示二進制數(Binary)。任何一個二進制數可表示為:式中:m為小數位的位數,n為整數位的位數,Bi為第i位上的數符(0或1)。例2.2
1101.11B=
3.十六進制數的表示法十六進制計數法的特點是:①逢十六進一;②使用16個數字符號(0~9,A,B,C,D,E,F)的不同組合來表示一個十六進制數,其中A
F依次表示10
15;③以后綴H或h表示十六進制數(Hexadecimal)。任何一個十六進制數可表示為:式中:m為小數位的位數,n為整數位的位數,Hi為第i位上的數符(可以是0,1,…,9,A,B,C,D,E,F十六個數字符號中的任一個)。例2.3
0E5AD.BFH=一般來說,對于基數為的任一數可用多項式表示為:式中:X為基數,表示X進制;i為位序號;m為小數部分位數;n為整數部分的位數;ki為第i位上的數值,可以為0,1,2,…,X-1共X個數字符號中任一個;Xi為第i位的權。2.1.2
各種數制的相互轉換
1.任意進制數轉換為十進制數二進制、十六進制以至任意進制數轉換為十進制數的方法很簡單,只要按權展開(即該位的數值乘于該位的權)求和即可。
2.十進制數轉換成二進制數
1).整數部分的轉換除以基數(2)取余數,先得到低位(B0)后為高位。該方法也適用于將十進制整數轉換為八進制整數(基數為8)、十六進制整數(基數為16)以至其它任何進制整數。2)小數部分的轉換小數部分乘以基數(2)取整數(0或1),先得到的為高位(B-1)后為低位。該方法也適用于將十進制小數轉換為八進制小數(基數為8)、十六進制小數(基數為16)以至其它任何進制小數。
例2.4將13.75轉換為二進制數。
分別將整數和小數部分進行轉換:整數部分:13=1101B
小數部分:0.75=0.11B
因此,13.75=1101.11B例2.5將28.75轉換為十六進制數
整數部分:28=1CH
小數部分:,B-1=CH,小數部分已為0,停止計算。因此,28.75=1C.CH
3.二進制數與十六進制數之間的轉換
因為24=16,即可用四位二進制數表示一位十六進制數,所以可得到如下所述的二進制數與十六進制數之間的轉換方法。將二進制數轉換為十六進制數的方法:以小數點為界,向左(整數部分)每四位為一組,高位不足4位時補0;向右(小數部分)每四位為一組,低位不足4位時補0。然后分別用一個16進制數表示每一組中的4位二進制數。將十六進制數轉換為二進制數的方法:直接將每一位十六進制數寫成其對應的四位二進制數。例2.61101110.01011B=0110,1110.0101,1000B=6E.58H2F.1BH=101111.00011011B2.1.3二進制數的運算
1.二進制數的算術運算
(1)
加: 0+0=00+1=11+0=11+1=0(進1)
(2)減: 0-0=01-1=01-0=10-1=1(借位)
(3)
乘: 0
0=00
1=01
0=01
1=1 (4)
除:二進制除法是乘法的逆運算。例2.7A=11110000B,B=00110101B,求解
2.二進制數的邏輯運算(1)
“與“運算(AND).“與”運算又稱邏輯乘,可用符號“
”或“
”表示。運算規則如下:0
0=00
1=01
0=01
1=1
可以看出,只有當兩個變量均為“1”時,“與”的結果才為“1”。
(2)
“或”運算(OR)“或”運算又稱邏輯加,可用符號“
”或“+”表示。運算規則如下:0
0=00
1=11
0=11
1=1
可以看出,兩個變量只要有一個為“1”,“或”的結果就為“1”。(3)
“非”運算(NOT)
變量的“非”運算結果用表示。邏輯“非”運算規則如下:(4)
“異或”運算(XOR)“異或”運算可用符號“
”表示。運算規則如下:
可以看出,兩變量只要不同,“異或”運算的結果就為“1”。例2.7A=11110101B,B=00110000B,求解2.2帶符號數的表示及運算
2.2.1機器數與真值無符號數與帶符號數如何表示帶符號的二進制數?對于一個字節型二進制數來說,D7位為符號位,D6
D0位為數值位。在符號位中,規定用“0”表示正,“1”表示負,而數值位表示該數的數值大小。把一個數及其符號位在機器中的一組二進制數表示形式,稱為“機器數”。機器數所表示的值稱為該機器數的“真值”。D7D6……D1D02.2.2
機器數的表示方法
1.原碼在原碼表示法中,最高位為符號位(正數為0,負數為1),其余數字位表示數的絕對值。
例如,當機器字長n=8時,
[+0]原=00000000B [-0]原=10000000B[+8]原=00001000B [-8]原=10001000B[+127]原=01111111B [-127]原=11111111B
當機器字長n=16時,[+0]原=0000000000000000B[+8]原=0000000000001000B[-0]原=1000000000000000B[-8]原=1000000000001000B[+32767]原=0111111111111111B[-32767]原=1111111111111111B可以看出,原碼表示數的范圍是-(2n-1-1)
(2n-1-1)
。8位二進制原碼表示數的范圍為-127
+127,16位二進制原碼表示數的范圍為-32767
+32767;“0”的原碼有兩種表示法:00000000表示+0,10000000表示-0。原碼表示法簡單直觀,且與真值的轉換很方便,算術運算電路很復雜。因此,計算機中通常使用補碼進行加減運算,這樣就引入了補碼表示法。2.反碼設數x的反碼記作[x]反,如機器字長為n,則反碼定義如下:正數的反碼與其原碼相同。例如,當機器字長n=8時:
[+0]反=[+0]原=00000000B [+127]反=[+127]原=01111111B當機器字長n=16時:
[+8]反=[+8]原=0000000000001000B[+127]反=[+127]原=0000000001111111B
負數的反碼是在原碼基礎上,符號位不變(仍為1),數值位按位取反。例如,當機器字長n=8時:
[-0]反=(28-1)-0=11111111B [-127]反=(28-1)-127=10000000B
反碼表示數的范圍是-(2n-1-1)
(2n-1-1)
。8位二進制反碼表示數的范圍為-127
+127,16位二進制反碼表示數的范圍為-32767
+32767;“0”的反碼有兩種表示法:00000000表示+0,11111111表示-0。3.補碼設數x的補碼記作[x]補,如機器字長為n,則補碼定義如下:正數的補碼與其原碼、反碼相同。例如,當機器字長n=8時:[+8]補=[+8]反=[+8]原=00001000B [+127]補=[+127]反=[+127]原=01111111B當機器字長n=16時:
[+8]補=[+8]反=[+8]原=0000000000001000B [+127]補=[+127]反=[+127]原
=0000000001111111B
負數的補碼(三種方法)例如,當機器字長n=8時:[-8]原=10001000B [-127]原=11111111B[-8]反=11110111B [-127]反=10000000B[-8]補=28-8=11111000B [-127]補=28-127=10000001B當機器字長n=16時:
[-8]補=216-8=1111111111111000B [-127]補=216-127=1111111110000001B可以看出,補碼表示數的范圍是-2n-1
(2n-1-1)
。8位二進制補碼表示數的范圍為-128
+127,16位二進制補碼表示數的范圍為-32768
+32767。表2.18位二進制數的原碼、反碼和補碼表帶符號數原碼反碼補碼000000000000000100000010…01111110011111111000000010000001…
111111011111111011111111012…
126127128129…
253254255+0+1+2…
+126+127-0-1
…
-125-126-127+0+1+2…
+126+127-127-126…-2-1-0+0+1+2…
+126+127-128-127…-3-2-1
二進制數
無符號十進制數2.2.3真值與機器數之間的轉換
一.原碼轉換為真值根據原碼定義,將原碼數值位各位按權展開求和,由符號位決定數的正負即可由原碼求出真值。例2.8已知[x]原=00011111B,[y]原=10011101B,求x和yx=+(0
26+0
25+1
24+1
23+1
22+1
21+1
20)=31y=-(0
26+0
25+1
24+1
23+1
22+0
21+1
20)=-29
2.反碼轉換為真值要求反碼的真值,只要先求出反碼對應的原碼,再按上述原碼轉換為真值的方法即可求出其真值。正數的原碼是反碼本身。負數的原碼可在反碼基礎上,符號位仍為1不變,數值位按位取反。例2.9已知[x]反=00001111B,[y]反=11100101B,求x和y解[x]原=[x]反=00001111Bx=+(0
26+0
25+0
24+1
23+1
22+1
21+1
20)=15[y]原=10011010B,
y=-(0
26+0
25+1
24+1
23+0
22+1
21+0
20)=-26補碼轉換為真值要求補碼的真值,也要先判斷補碼的符號。正數的原碼與補碼相同。負數的原碼可在補碼基礎上再次求補,即:或:負數的絕對值=2n-[X]補即:負數的真值=-(2n-[X]補)例2.10已知[x]補=00001111B,[y]補=11100101B,求x和y解[x]原=[x]補=00001111B,
x=+(0
26+0
25+0
24+1
23+1
22+1
21+1
20)=15[y]原=[[y]補]補=10011011B,
y=-(0
26+0
25+1
24+1
23+0
22+1
21+1
20)=-272.2.4補碼的加減運算
1.補碼加法在計算機中,凡是帶符號數一律用補碼表示,運算結果也是補碼。其運算特點是:符號位和數值位一起參加運算,并且自動獲得結果(包括符號位與數值位)。補碼加法的運算規則為:即:兩數補碼的和等于兩數和的補碼。例2.11已知
[+51]補=00110011B,[+66]補=01000010B,
[-51]補=11001101B,
[-66]補=10111110B
求[+66]補+[+51]補=?[+66]補+[-51]補=?[-66]補+[-51]補=?解
[+66]補+[+51]補=[(+66)+(+55)]補=01110101B其真值為+117,計算結果正確。二進制(補碼)加法十進制加法
01000010[+66]補
+66+)00110011[+51]補
+)+51?01110101[+117]補
+117[+66]補+[?51]補=[(+66)+(?55)]補=0000111B其真值為+15,計算結果正確。二進制(補碼)加法十進制加法
01000010[+66]補
+66+)11001101[?51]補
+)?5100001111[+15]補
+151自動丟失[?66]補+[?51]補=10001011B=[(?66)+(?55)]補其真值為?117,計算結果正確。
二進制(補碼)加法十進制加法
10111110[-66]補
-66+)11001101[?51]補
+)?5110001011[-117]補
-1171自動丟失結論:不論被加數、加數是正數還是負數,只要直接用它們的補碼直接相加,當結果不超出補碼所表示的范圍時,計算結果便是正確的補碼形式。但當計算結果超出補碼表示范圍時,結果就不正確了,這種情況稱為溢出。[+66]補+[+66]補=01000010+01000010=10000100
([-124]補)
2.補碼減法補碼減法的運算規則為:如何由[y]補求[-y]補[y]補連同符號位在內的所有位全部變反,再加1例2.12
已知[+51]補=00110011B,[+66]補=01000010B[?51]補=11001101B,[?66]補=10111110B求
[+66]補?[+51]補=?[?66]補?
[?51]補=?解
[+66]補?[+51]補=[+66]補+[?51]補
[?66]補?[?51]補=[?66]補+[+51]補
二進制(補碼)減法[+66]補?[+51]補十進制減法
01000010[+66]補
01000010[+66]補
+66+)11001101[?51]補
-)00110011[+51]補
-)+5100001111[+15]補
00001111
[+15]補
+151自動丟失二進制(補碼)減法[?66]補?[?51]補十進制減法
10111110[-66]補
10111110[-66]補
-66+)00110011[+51]補
-)
11001101[-51]補
-)-5111110001[-15]補
11110001[-15]補
-15
結論:無論被減數、減數是正數還是負數,上述補碼減法的規則都是正確的。同樣,由最高位向更高位的進位會自動丟失而不影響運算結果的正確性。計算機中帶符號數用補碼表示時有如下優點:①可以將減法運算變為加法運算,因此可使用同一個運算器實現加法和減法運算,簡化了電路。②無符號數和帶符號數的加法運算可以用同一個加法器實現,結果都是正確的。例如:
無符號數帶符號數
11100001 225 [?31]補+)00001101?+)13 +)[+13]補
11101110 238[?18]補若兩操作數為無符號數時,計算結果為無符號數11101110B,其真值為238,結果正確;若兩操作數為補碼形式,計算結果也為補碼形式,11101110B為–18的補碼,結果也是正確的。2.2.5溢出及其判斷方法
1.進位與溢出所謂進位,是指運算結果的最高位向更高位的進位,用來判斷無符號數運算結果是否超出了計算機所能表示的最大無符號數的范圍。溢出是指帶符號數的補碼運算溢出,用來判斷帶符號數補碼運算結果是否超出了補碼所能表示的范圍。例如,字長為n位的帶符號數,它能表示的補碼范圍為?2n?1
+2n?1?1,如果運算結果超出此范圍,就叫補碼溢出,簡稱溢出。
2.溢出的判斷方法若符號位進位狀態用CF來表示,當符號位向前有進位時,CF=1,否則,CF=0;數值部分最高位的進位狀態用DF來表示,當該位向前有進位時,DF=1,否則,DF=0。通過該兩位進位狀態的異或結果來判斷是否溢出的。若OF=1,說明結果溢出;若OF=0,則結果未溢出。也就是說,當符號位和數值部分最高位同時有進位或同時沒有進位時,結果沒有溢出,否則,結果溢出。例2.13
設有兩個操作數x=01000100B,y=01001000B,將這兩個操作數送運算器做加法運算,試問:①若為無符號數,計算結果是多少?②若為帶符號補碼數,計算結果是否溢出?解
無符號數帶符號數
0100010068[+68]補+)01001000+)72+)[+72]補
10001100140[+140]補DF=1CF=0①若為無符號數,由于CF=0,說明結果未超出8位無符號數所能表達的數值范圍(0
255),計算結果10001100B為無符號數,其真值為140。②若為帶符號數補碼,由于OF=1,結果溢出;因此結果是錯誤的。例2.14
設有兩個操作數x=11101110B,y=11001000B,將這兩個操作數送運算器做加法運算,試問:①若為無符號數,計算結果是多少?②若為帶符號補碼數,計算結果是否溢出?解
無符號數帶符號數
11101110238[-18]補+)11001000+)200+)[-56]補
10110110438[-74]補DF=1CF=11自動丟失①若為無符號數,由于CF=1,說明結果超出8位無符號數所能表達的數值范圍(0
255)。兩操作數11101110B和11001000B對應的無符號數分別為238和200,兩數之和為438。②若為帶符號數補碼,由于OF=0,結果未溢出。兩操作數11101110B和11001000B分別為?18和?56的補碼,其結果應為?74的補碼形式,而計算結果10110110B正是?74的補碼,因此結果正確。2.3信息的編碼2.3.1二進制編碼的十進制數(BCD編碼)1位十進制的0
9這10個數字分別用4位二進制碼的組合來表示,在此基礎上可按位對任意十進制數進行編碼。這就是二進制編碼的十進制數,簡稱BCD碼(Binary-CodedDecimal)。最常用的是8421BCD碼,這種編碼從0000
1111這16種組合中選擇前10個即0000
1001來分別代表十進制數碼0
9,8、4、2、1分別是這種編碼從高位到低位每位的權值。BCD碼有兩種形式,即壓縮型BCD碼和非壓縮型BCD碼。
1.壓縮型BCD碼壓縮型BCD碼用一個字節表示兩位十進制數。例如,10000110B表示十進制數86。
2.非壓縮型BCD碼非壓縮型BCD碼用一個字節表示一位十進制數。高4位總是0000,低4位用0000
1001中的一種組合來表示0
9中的某一個十進制數。表2.28421BCD碼部分編碼表十進制數壓縮型BCD碼非壓縮型BCD碼12391011192021000000010000001000000011000010010001000000010001000110010010000000100001000000010000001000000011
0000100100000001000000000000000100000001
000000010000100100000010000000000000001000000001雖然BCD碼可以簡化人機聯系,但它比純二進制編碼效率低而且用BCD碼進行運算所花的時間也要更多,計算過程更復雜例2.15
十進制數與BCD數相互轉換。①將十進制數69.81表示為壓縮型BCD碼:
01101001.10000001B(68.81H)②將BCD碼10001001.01101001B表示為十進制數:
89.69例2.16
設有x的機器數10010110B,分別視其為無符號數、原碼、補碼、壓縮型BCD碼時,試分別求x的真值。解若是無符號數:x=10010110B=150若是原碼: [x]原=10010110B
x=?22若是補碼: [x]補=10010110B
x=?106若是壓縮型BCD碼:[x]BCD=10010110B
x=96例2.17(BCD碼運算時的修正問題)用BCD碼求38+49。解
0011100038的BCD碼+)0100100149的BCD碼
1000000181的BCD碼結果是錯誤的。解決辦法是對二進制加法運算結果采用“加6修正”,從而將二進制加法運算的結果修正為BCD碼加法運算結果。
BCD數相加時,對二進制加法運算結果修正的規則如下:①如果兩個對應位BCD數相加的結果大于9,則該位需要加6修正。②如果兩個對應位BCD數相加的結果向高位有進位(結果大于或等于16),則該位需要進行加6修正。因此,兩個BCD數進行運算時,首先按二進制數進行運算,然后必須用相應的調整指令進行調整,從而得到正確的BCD碼結果。2.3.2ASCII字符編碼所謂字符,是指數字、字母以及其他一些符號的總稱。現代計算機不僅用于處理數值領域的問題,而且要處理大量的非數值領
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025商業大廈租賃合同協議書
- 2025房屋租賃合同書范本超詳細
- 2025水果定購合同范本
- 2025關于租賃合同簡易版
- 城軌車輛運營與規章-內容九 內容八 內容七 內容六 內容五 內容四 內容三 內容二 內容一-1738426037551
- 《成語:傳統文化的微縮畫卷》教學課件
- 《精益生產案例解析》課件
- 七臺河職業學院《土木工程專業導論》2023-2024學年第一學期期末試卷
- 山東省新泰一中2025年高三5月三模歷史試題含解析
- 上海杉達學院《設計思維》2023-2024學年第二學期期末試卷
- GB/T 4135-2016銀錠
- GA/T 992-2012停車庫(場)出入口控制設備技術要求
- 河流專題復習-重點課件
- 企業風險管理-戰略與績效整合(中文版)
- 2022年全國職工書屋推薦書目
- 哈薩克斯坦鐵路車站代碼
- 裝配式建筑設計設計專篇
- 《教育心理學》教材
- 綏滿公路大慶黃牛場至齊齊哈爾宛屯段擴建項目B4合同段施工組織設計
- 身體紅綠燈課件
- Pentacam白內障應用(第二版)
評論
0/150
提交評論