陜西師范大學(xué)-計算機組成原理-課件ppt-白中英第5版-chp2_第1頁
陜西師范大學(xué)-計算機組成原理-課件ppt-白中英第5版-chp2_第2頁
陜西師范大學(xué)-計算機組成原理-課件ppt-白中英第5版-chp2_第3頁
陜西師范大學(xué)-計算機組成原理-課件ppt-白中英第5版-chp2_第4頁
陜西師范大學(xué)-計算機組成原理-課件ppt-白中英第5版-chp2_第5頁
已閱讀5頁,還剩349頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第二章運算方法和運算器主講:李鵬lipeng@【相關(guān)說明:本課件以白中英老師教材及課件為藍本制作而成,特表感謝;網(wǎng)上文檔會伴隨教研過程不定期更新版本;最后,懇請文檔使用者批評、指正文中出現(xiàn)的錯誤、疏漏;版本時間:2014.6】《計算機組成原理》(第五版)白中英、戴志濤主編–課件PPT

陜西師范大學(xué)計算機科學(xué)學(xué)院本章主要內(nèi)容2.1數(shù)據(jù)與文字的表示2.2定點加法、減法運算2.3定點乘法運算2.4定點除法運算2.5定點運算器的組成2.6浮點運算與浮點運算器教學(xué)大綱要求掌握:(一)數(shù)制與編碼1、進位計數(shù)制及其相互轉(zhuǎn)換2、真值和機器數(shù)3、BCD碼4、字符與字符串5、校驗碼教學(xué)大綱要求掌握:(二)定點數(shù)的表示和運算1、定點數(shù)的表示

無符號數(shù)的表示;有符號數(shù)的表示。2、定點數(shù)的運算定點數(shù)的移位運算;原碼定點數(shù)的加減運算;補碼定點數(shù)的加減運算;定點數(shù)的乘除運算;溢出概念和判別方法。教學(xué)大綱要求掌握:(三)浮點數(shù)的表示和運算1、浮點數(shù)的表示浮點數(shù)的表示范圍;IEEE754標準。2、浮點數(shù)的加減運算教學(xué)大綱要求掌握:(四)算術(shù)邏輯單元ALU1、串行加法器和并行加法器2、算術(shù)邏輯單元ALU的功能和結(jié)構(gòu)2.1數(shù)據(jù)與文字的表示方法第一小節(jié)主要討論:現(xiàn)實世界中的各類信息怎樣數(shù)字化并記錄到計算機的存儲系統(tǒng)中,進而在后續(xù)章節(jié)討論怎樣處理這些數(shù)據(jù)。請思考:如果給你一套計算機系統(tǒng),它的存儲器有很多個連續(xù)的“位”,每個“位”可以而且僅可以保存0或者1兩種狀態(tài),思考怎樣將現(xiàn)實世界中的各類信息保存進系統(tǒng)。72.1數(shù)據(jù)與文字的表示方法現(xiàn)實世界中的信息數(shù)據(jù)按本質(zhì)總體上可分成兩大類別:數(shù)值型數(shù)據(jù):表示事物的數(shù)量、規(guī)模。字符型數(shù)據(jù)(非數(shù)值型數(shù)據(jù)):字符。因此解決方法是:用二進制表示數(shù)值型數(shù)據(jù)用01序列表示字符型數(shù)據(jù)2.1.1數(shù)據(jù)格式目標:將數(shù)值型數(shù)據(jù)表示在計算機內(nèi)制定怎樣的規(guī)則來完成這一任務(wù)?這個規(guī)則應(yīng)該滿足:便于數(shù)據(jù)的存儲、加工(處理)、傳送;編碼盡可能用少量、簡單的基本符號應(yīng)該有適當(dāng)?shù)谋M可能簡單的規(guī)則表示盡可能多的信息2.1.1數(shù)據(jù)格式對面臨的問題再深入分析:思考:如果要保存全班學(xué)生總數(shù)?如果要保存銀行收支數(shù)據(jù)?如果要保存男生所占比例?如果要保存太陽的質(zhì)量和電子的直徑2.1.1數(shù)據(jù)格式我們的解決方法是:定點表示法&浮點表示法首先回顧預(yù)備知識~數(shù)制概念:數(shù)制,按照進位的原則進行計數(shù)稱為進位計數(shù)制,簡稱數(shù)制。特點表示數(shù)值大小的數(shù)碼與它在數(shù)中的位置有關(guān)。例:十進制1573.68(展開)

數(shù)制1.十進制(Decimal)有十個數(shù)碼:0,l,2,3,4,5,6,7,8,9。進位基數(shù)為10。逢十進一(加法運算),借一當(dāng)十(減法運算)。如:一個十進制數(shù)1573.68其含義是:

1×103+5×102+7×101+3×100+6×10-1+8×10-2可見,一個數(shù)字處在不同的數(shù)位其代表的意義不同。數(shù)制十進制數(shù)位權(quán)展開式:若有一個n位整數(shù)m位小數(shù)的十進制數(shù),可表示成(Dn-1Dn-2……D1D0.D-1……D-m)10=

Dn-1×10n-1+Dn-2×10n-2+……+D1×101+D0×100+D-1×10-1……+D-m×10-m10n-1

,10n-2,……100稱為十進制的“權(quán)”,其中10叫做十進制的“基數(shù)”數(shù)制推廣到所有數(shù)制,位權(quán)表示法的數(shù)制具有如下特征:若有一個n位整數(shù)m位小數(shù)的R進制數(shù),可表示成(Bn-1Bn-2……B1B0.B-1……B-m)R=Bn-1×Rn-1+Bn-2×Rn-2+……+B1×R1+B0×R0+B-1×R-1……B-m×R-m此表達式又稱為R進制的按“權(quán)”展開式。Rn-1,Rn-2,

……

R0,

R-1……稱為二進制的“權(quán)”,其中R叫做“基數(shù)”數(shù)制-二進制2.二進制(Binary)只有0和1兩個數(shù)碼。進位基數(shù)為2。逢二進一(加法運算),借一當(dāng)二(減法運算)。數(shù)制-八進制3.八進制(Octal)有八個數(shù)碼:0,l,2,3,4,5,6,7。進位基數(shù)為8。逢八進一(加法運算),借一當(dāng)八(減法運算)。數(shù)制-八進制例:(7)8+(1)8=(10)8(4)8+(5)8=(11)8(12)8-(5)8=(5)8注意:非十進制數(shù)的讀法,“個十百千…”是十進制的概念。數(shù)制-十六進制4.十六進制(Hexadecimal)有十六個數(shù)碼:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)。基數(shù)為16。逢十六進一,借一當(dāng)十六。A,B,C,D,E,F(xiàn)10,11,12,13,14,15數(shù)制-十六進制例:(9)16+(5)16=(E)16(9)16+(7)16=(10)16*(18)16+(C)16=(24)16*(18)16-(C)16=(C)16C12數(shù)制-小結(jié)進位計數(shù)制十進制二進制八進制十六進制數(shù)碼(數(shù)元)0,1,2…90,10,1,2…70,1…9,A,B,C,D,E,F(xiàn)基數(shù)102816權(quán)重10i2i8i16i標識10或D或不寫2或B8或O16或H例子(123)10(110)2(177)8(1AF)16BinaryOctalHexadecimalDecimalBinaryDecimalOctalBinaryDecimalHexadecimalOctalBinaryDecimal非十進制數(shù)轉(zhuǎn)換為十進制數(shù)方法:按照位權(quán)展開:(Bn-1Bn-2……B1B0.B-1……B-m)R=Bn-1×Rn-1+Bn-2×Rn-2+……+B1×R1+B0×R0+B-1×R-1……B-m×R-m非十進制數(shù)轉(zhuǎn)換為十進制數(shù)例:(11)2=1×21+1×20=(3)10(101)2=1×22+1×20=(5)10(1011)2=1×23+1×21+1×20=(11)10(10110.1)2=24+22+21+2-1=(22.5)10非十進制數(shù)轉(zhuǎn)換為十進制數(shù)(137.2)8=64+24+7+2×0.125=(95.25)10(2AF)16=2×162+A×161+F×160=(687)10十進制數(shù)轉(zhuǎn)換為非十進制數(shù)十進制整數(shù)轉(zhuǎn)換為二進制整數(shù)整數(shù)部分:采取“除以2取余”法小數(shù)部分采取“乘以2取整”法2122十進制數(shù)轉(zhuǎn)換為非十進制數(shù)83取余數(shù)241B0=1220B1=110B2=025B3=02B4=12B5=00B6=1(83)10=(1010011)2課堂練習(xí):(57)10=(111001)2(83)10=()20.57×21.1410.14×20.280×20.560×21.1210.12×20.240×20.4800.48×20.960×21.921取整數(shù)(0.57)10十進制數(shù)轉(zhuǎn)換為非十進制數(shù)=(0.10010001)2十進制數(shù)轉(zhuǎn)換為非十進制數(shù)說明:十進制數(shù)不一定都能表示成有限位的其他進制小數(shù)提示:Windows自帶的計算器只能進行整數(shù)的數(shù)制轉(zhuǎn)換,不能進行小數(shù)數(shù)制轉(zhuǎn)換課堂練習(xí):(0.6875)10=(0.1011)2十進制數(shù)轉(zhuǎn)換為非十進制數(shù)十進制數(shù)轉(zhuǎn)換為八進制數(shù)整數(shù)部分:除以8取余小數(shù)部分:乘以8取整。

將十進制數(shù)95.265625轉(zhuǎn)換成八進制數(shù)整數(shù)部分用‘除以8取余’

895811810

結(jié)果為(95)10=(137)8十進制數(shù)轉(zhuǎn)換為非十進制數(shù)余數(shù)為7余數(shù)為3余數(shù)為1十進制數(shù)轉(zhuǎn)換為非十進制數(shù)小數(shù)部分用‘乘以8取整’法轉(zhuǎn)換成八進制

0.265625╳8=2.125整數(shù)部分為20.125╳8=1整數(shù)部分為1結(jié)果為(0.265625)10=(0.21)8最終結(jié)果(95.265625)10=(137.21)8十進制數(shù)轉(zhuǎn)換為非十進制數(shù)3.十進制數(shù)與十六進制數(shù)的相互轉(zhuǎn)換與之前類似:整數(shù)部分:除以16取余。小數(shù)部分:乘以16取整。十進制數(shù)轉(zhuǎn)換為非十進制數(shù)-小結(jié)十進制數(shù)二進制數(shù)八進制數(shù)十六進制數(shù)按權(quán)展開法整數(shù)部分:除以8取余,逆序取結(jié)果小數(shù)部分:乘以8取整,正序取結(jié)果整數(shù)部分:除以16取余,逆序取結(jié)果小數(shù)部分:乘以16取整,正序取結(jié)果整數(shù)部分:除以2取余,逆序取結(jié)果小數(shù)部分:乘以2取整,正序取結(jié)果十進制數(shù)二進制數(shù)二進制與其他進制之間的轉(zhuǎn)換二進制數(shù)轉(zhuǎn)換成八進制數(shù)(101111001.1101)2101111001.11010017564(101111001.1101)2

=(571.64)8二進制與其他進制之間的轉(zhuǎn)換八進制數(shù)轉(zhuǎn)換成二進制數(shù)

八進制數(shù)轉(zhuǎn)換成二進制數(shù)可采取“一位拆三位”,即把一位八進制數(shù)寫成對應(yīng)的三位二進制數(shù)形式,然后按權(quán)連接即可。二進制與其他進制之間的轉(zhuǎn)換(257.34)8257.34010101111.011100(257.34)8=

(10101111.0111)2二進制與其他進制之間的轉(zhuǎn)換二進制數(shù)與十六進制數(shù)之間的相互轉(zhuǎn)換

二進制基數(shù)為2,十六進制基數(shù)為16,因

24=16,故二進制四位完整對應(yīng)十六進制一位轉(zhuǎn)換過程與八進制轉(zhuǎn)換過程類似二進制與其他進制之間的轉(zhuǎn)換十進制二進制八進制十六進制00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F剛才回顧的內(nèi)容跟計算機本身沒有直接關(guān)系屬于數(shù)學(xué)中的知識運用數(shù)學(xué)中的有關(guān)數(shù)的規(guī)則建立計算機中數(shù)據(jù)表示方法2.1.1數(shù)據(jù)格式1、定點表示法規(guī)則:所有數(shù)據(jù)的小數(shù)點位置固定不變小數(shù)點固定在什么位置?純整數(shù)純小數(shù)數(shù)值帶不帶符號?帶符號數(shù)不帶符號數(shù)2.1.1數(shù)據(jù)格式2、定點純整數(shù)

x0x1x2x3…xn-1xn表示數(shù)的范圍是0≤|x|≤2n-1提問:最小數(shù)、最大數(shù)、最接近0的正數(shù)、最接近0的負數(shù)呢?(在數(shù)軸上表示)符號量值小數(shù)點固定于最后一位之后,不需專門存放位置定點純整數(shù)主要負責(zé)表數(shù)范圍定點純小數(shù)主要負責(zé)表數(shù)精度3、定點純小數(shù)x0x1x2x3…xn-1xn表示數(shù)的范圍是0≤|x|≤1-2-n提問:最小數(shù)、最大數(shù)、最接近0的正數(shù)、最接近0的負數(shù)?符號量值小數(shù)點固定于符號位之后,不需專門存放位置2.1.1數(shù)據(jù)格式2.1.1數(shù)據(jù)格式定點整數(shù)的溢出以一個字節(jié)為例

-1270127負溢出正溢出-(2n-1)(2n-1)2.1.1數(shù)據(jù)格式定點小數(shù)的精度小數(shù)點后n位,即精確到2-n以一個字節(jié)為例

-101最大值0.1111111,無法表示0.1111111001最近零0.0000001,無法表示0.0000000001-0.0000001,無法表示-0.000000001最小值-0.1111111,無法表示-0.1111111112.1.1數(shù)據(jù)格式4、定點表示法的特點定點表示方法直接、簡單,將二進制計數(shù)制與01狀態(tài)的存儲方式較好結(jié)合但定點數(shù)表示數(shù)的范圍受字長限制,表示數(shù)的大小范圍有限;帶小數(shù)點的實數(shù),需要設(shè)置比例因子增大或者縮小若干倍變成整數(shù)或者純小數(shù)保存,操作不便所以——引入浮點2.1.1數(shù)據(jù)格式思考:可否將比例因子和有效數(shù)字一并保存在一個連續(xù)的存儲空間?可以方便的設(shè)置比例因子,將實數(shù)化為整數(shù)或者純小數(shù)保存比例因子的大小決定了小數(shù)點所在的實際位置所以——浮動的小數(shù)點出現(xiàn)了2.1.1數(shù)據(jù)格式5、浮點表示格式:N=RE×0.M可在機器中表示為:指數(shù)E基數(shù)R,取固定的值2尾數(shù)M階符階碼數(shù)符尾數(shù)任意十進制數(shù)N2.1.1數(shù)據(jù)格式舉例:0.11000×21100能人想出了這么有效的數(shù)值型數(shù)據(jù)表示方法!既能保存有效數(shù)字,又能大幅拓寬示數(shù)范圍!

這樣的設(shè)計會不會仍然存在什么問題??01100

0110002.1.1數(shù)據(jù)格式

0.11000×21100

0.01100×211010.00110×211100.00011×21111都表示的是同一個十進制數(shù)01100

011000011010011002.1.1數(shù)據(jù)格式同一個數(shù)竟然可以有多種不同的表示方法?!腫么辦?@_@2.1.1數(shù)據(jù)格式解決方法:建立一個制度,約束這種多變的情況具體地:建立規(guī)格化的浮點表示方法。指的是,當(dāng)尾數(shù)的值不為0時,尾數(shù)域的最高有效位應(yīng)為1。2.1.1數(shù)據(jù)格式同一個數(shù)的四中表示方法:0.11000×21100選用0.01100×21101舍棄0.00110×21110舍棄0.00011×21111舍棄上述四中表示方法,只認第一種問題得到解決!^_^2.1.1數(shù)據(jù)格式這樣,數(shù)據(jù)的表示就已經(jīng)很完善了吧~~但還有更能的人粗線了~~既然約定尾數(shù)不為0時,最高位始終為1,那也就可以將1省去不寫,約定尾數(shù)如果寫的是M,真正的尾數(shù)是1.M節(jié)約了一個“位”用1×2-n表示0也能很好的完成0,+∞,-∞等的表示。2.1.1數(shù)據(jù)格式事情還不只這么簡單出于各種目的,有時尾數(shù)和階碼不固定的使用機器原碼、補碼甚至移碼、反法。不同的規(guī)則、不同的約定使同樣的一組01序列,有著不同的解讀。2.1.1數(shù)據(jù)格式規(guī)格化浮點數(shù)例題:某機浮點規(guī)格化表示的位數(shù)格式如下,階碼和尾數(shù)均為原碼,試寫出所能表示的最大值、最小值、最接近零的正負值。階符階碼數(shù)符尾數(shù)15192.1.1數(shù)據(jù)格式階符階碼數(shù)符尾數(shù)最大值:0.111111111*211111,即,(1-2-9)×231約等于2,143,289,344最小值:-(1-2-9)×231最接近零正值:0.1

×2-31接近零負值:-0.1

×2-3115192.1.1數(shù)據(jù)格式分析:共計16位,兩個字節(jié)的存儲空間若用浮點可以表示最大值2,143,289,344(階碼位數(shù)增加值更大)該值若用定點表示至少需32位:01111111110000000000000000000000(有符號定點整數(shù))若用無符號定點表示:0-65535有符號定點表示:-32767-327672.1.1數(shù)據(jù)格式再做例題:設(shè)浮點數(shù)的格式為:階符1位,階碼4位,數(shù)符1位,尾數(shù)6位,均為原碼且尾數(shù)規(guī)格化,則該浮點數(shù)表示的最大數(shù)為_______________。(1-2-6)×215如果在上述格式下要保存十進制數(shù)12.25,相應(yīng)的01序列應(yīng)為:_____。

0010001100012.1.1數(shù)據(jù)格式規(guī)格化的浮點數(shù)表示范圍如下圖所示最大值:(1-2-6)×215最小值:-(1-2-6)×215最小正值:0.1×2-15

最大負值:0.1

×-2-15

602.1.1數(shù)據(jù)格式分割線浮點數(shù)規(guī)格化表示理論具體的IEEE754標準2.1.1數(shù)據(jù)格式6、IEEE754標準(規(guī)定了浮點數(shù)的表示格式,運算規(guī)則等)規(guī)則規(guī)定了單精度(32)和雙精度(64)的基本格式.規(guī)則中,尾數(shù)用原碼,指數(shù)用移碼(便于對階和比較)622.1.1數(shù)據(jù)格式什么是移碼?一般用來表示浮點數(shù)的階碼是一個定點有符號整型數(shù)據(jù)

二進制真值e=e0e1e2……ek-1ek[e]移=2k+eeg.e=+10101[e]移=+10101+100000=110101eg.e=-10101[e]移=-10101+100000=0010112.1.1數(shù)據(jù)格式但是在IEEE754標準中移碼卻有特殊的約定:32位浮點數(shù)的移碼(8位)計算方法是:E=e+127

即e=E-1272.1.1數(shù)據(jù)格式IEEE754標準32位的浮點數(shù):S:數(shù)的符號位,1位,在最高位,“0”表示正數(shù),“1”表示負數(shù)。M是尾數(shù),23位,在低位部分,采用純小數(shù)表示E是階碼,8位,采用移碼表示。移碼比較大小方便。規(guī)格化:若不對浮點數(shù)的表示作出明確規(guī)定,同一個浮點數(shù)的表示就不是惟一的。尾數(shù)域最左位(最高有效位)總是1,故這一位經(jīng)常不予存儲,而認為隱藏在小數(shù)點的左邊。采用這種方式時,將浮點數(shù)的指數(shù)真值e變成階碼E時,應(yīng)將指數(shù)e加上一個固定的偏移值127(01111111),即E=e+127。652.1.1數(shù)據(jù)格式一個規(guī)格化的32位浮點數(shù)x的真值表示為:

x=(-1)S×(1.M)×2E-127

e=E-12764位的浮點數(shù)中符號位1位,階碼域11位,尾數(shù)域52位,指數(shù)移碼偏移值是1023。因此規(guī)格化的64位浮點數(shù)x的真值為:

x=(-1)S×(1.M)×2E-1023

e=E-1023662.1.1數(shù)據(jù)格式P18例2:將數(shù)(20.59375)10轉(zhuǎn)換成754標準的32位浮點數(shù)的二進制存儲格式。解:(20.59375)10=10100.1001110100.10011=1.010010011×24S=0,E=4+127=131,M=010010011

最后得到32位浮點數(shù)的二進制存儲格式為:01000001101001001100000000000000(41A4C000)162.1.1數(shù)據(jù)格式P18例1:若浮點數(shù)x的754標準存儲格式為(41360000)16,求其浮點數(shù)的十進制數(shù)值。(41360000)16010000010011011000000000000000001位8位23位1.011011×210000010–1111111=1.011011×211=1011.011=(11.375)102.1.1數(shù)據(jù)格式---IEEE示數(shù)范圍分析IEEE754浮點數(shù)格式說明:一個規(guī)格化的32位浮點數(shù)x的真值可表示為x=(-1)s×(1.M)×2E-127

e=E-127

E全0或E全1:特殊用途;一般數(shù):E的范圍是1~254;(階碼范圍-126~+127)2.1.1數(shù)據(jù)格式---IEEE示數(shù)范圍分析對于IEEE754標準:當(dāng)階碼E為全0且尾數(shù)M也為全0時的值,結(jié)合符號位S為0或1,真值x為零,包含正零和負零之分。當(dāng)階碼E為全1且尾數(shù)M為全0時,結(jié)合符號位S為0或1,真值為無窮大,也有+∞和-∞之分。702.1.1數(shù)據(jù)格式---IEEE示數(shù)范圍分析尾數(shù)部分階碼形式0全0零0全1無窮非0全0非正規(guī)形式NaN非0全1非正規(guī)形式NaN任意非全0或全1正規(guī)形式2.1.1數(shù)據(jù)格式---IEEE示數(shù)范圍分析IEEE754的32位浮點數(shù)表示的除0外的絕對值最小的數(shù):s0000000100000000000000000000000 x=(-1)S×2-126×1.0IEEE754的32位浮點數(shù)表示的除∞外的絕對值最大的數(shù):s1111111011111111111111111111111 x=(-1)S×2127×(2-2-23)2.1.1數(shù)據(jù)格式定點和浮點分析:浮點數(shù)所表示的范圍遠比定點數(shù)大。一臺計算機中究竟采用定點表示還是浮點表示,要根據(jù)計算機的使用條件來確定。一般在高檔微機以上的計算機中同時采用定點、浮點表示,由使用者進行選擇。而單片機中多采用定點表示。2.1.1數(shù)據(jù)格式4、十進制數(shù)串的表示字符串形式:一個字節(jié)存放一個十進制數(shù)位(數(shù)碼)或者符號位。壓縮的十進制數(shù)串即BCD碼其他編碼方式有權(quán)碼:(8421碼、2421碼、5211碼)無權(quán)碼:(余三碼、格雷碼)自定義數(shù)據(jù)表示2.1.1數(shù)據(jù)格式字符串形式一個字節(jié)存放一個十進制的數(shù)位或符號位。為了指明這樣一個數(shù),需要給出該數(shù)在主存中的起始地址和位數(shù)(串的長度)。即ASCII碼形式。2.1.1數(shù)據(jù)格式壓縮的十進制數(shù)串形式壓縮的十進制數(shù)串形式:一個字節(jié)存放兩個十進制的數(shù)位。它比前一種形式節(jié)省存儲空間,又便于直接完成十進制數(shù)的算術(shù)運算,是廣泛采用的較為理想的方法。BCD碼(二-十進制編碼)2.1.1數(shù)據(jù)格式BCD碼:表示一位十進制數(shù)的二進制碼的每一位有確定的權(quán)。一般用8421碼,其4個二進制碼的權(quán)從高到低分別為8、4、2和1。用0000,0001,…,1001分別表示0,1,…,9,每個數(shù)位內(nèi)部滿足二進制規(guī)則,而數(shù)位之間滿足十進制規(guī)則,故稱這種編碼為“以二進制編碼的十進制(binarycodeddecimal,簡稱BCD)碼”。2.1.1數(shù)據(jù)格式十進制數(shù)8421碼2421碼5211碼4311碼000000000000000001000100010001000120010001000110011300110011010101004010001000111100050101101110000111601101100101010117011111011100110081000111011101110910011111111111112.1.2數(shù)的機器碼表示一、數(shù)的機器碼表示真值:數(shù)值數(shù)據(jù)的實際值如:-33,1011B,257等機器碼:數(shù)值數(shù)據(jù)在計算機內(nèi)的編碼表示機器碼的種類:原碼反碼補碼移碼為什么要提出機器碼?要解決在計算機內(nèi)部數(shù)的正、負符號和小數(shù)點運算問題。2.1.2數(shù)的機器碼表示具體地:在計算機中對數(shù)據(jù)進行運算操作時,符號位的表示,符號位是否也同數(shù)值位一道參加運算?如何參加運算?為了妥善的處理好這些問題,就需要把符號位和數(shù)字位一起編碼表示數(shù)據(jù),為適應(yīng)不同的處理要求,產(chǎn)生了多種數(shù)據(jù)編碼方法,如原碼、補碼、反碼、移碼等。2.1.2數(shù)的機器碼表示原碼、補碼、反碼的共性:1)這幾種編碼表示中,正數(shù)的編碼值與真值一樣,負數(shù)具有不同的編碼。2)編碼的最高位為符號位:

0表示正

1表示負2.1.2數(shù)的機器碼表示—(簡化版)1、原碼表示法符號位:0表示正,1表示負數(shù)值部分:與真值的二進制形式一樣原碼的特征:1)零有兩種表示:+0和-0

[+0]原=0.000...0

[-0]原=1.000...02)優(yōu)點:簡單直觀,便于乘、除法運算缺點:加減法運算不便(符號不能直接參與運算)2.1.2數(shù)的機器碼表示—(簡化版)2、反碼表示法符號位:0表示正,1表示負 數(shù)值部分:正數(shù)不變;負數(shù)反碼是將真值的各位取反得到反碼的特征:

1)零有兩種表示:+0和-0

[+0]反=0.00...0

[-0]反=1.11...1

2)通常用于求補碼,是個過渡編碼2.1.2數(shù)的機器碼表示—(簡化版)3、補碼表示法符號位:0表示正,1表示負 數(shù)值部分:正數(shù)不變;負數(shù)通過求補得到。補碼的特征:

1)零的表示唯一

2)補碼加減法運算中,符號直接參與運算

3)定點小數(shù)表示中,[-1]補=1.00…02.1.2數(shù)的機器碼表示—(簡化版)4、移碼表示法移碼通常用于表示浮點數(shù)的階碼。階碼是個n位的整數(shù)。對于正數(shù),符號位為"1",其余位不變(+1110001->11110001);對于負數(shù),符號位為"0",其余位取反,最后加"1"(-1110001->00001111)。符號位:1表示正,0表示負數(shù)值部分:與補碼數(shù)值部分相同2.1.2數(shù)的機器碼表示—(簡化版)機器碼原碼反碼補碼移碼正數(shù)符號位:0其余位同真值同原碼同原碼符號位變?yōu)?負數(shù)符號位:1其余位同真值符號位不變,其余各位取反反碼+1符號位位0,其余各位取反加12.1.2數(shù)的機器碼表示—(簡化版)例:寫出下列各真值定點8位的原碼、反碼、補碼、移碼表示。

(27)10 (-103)10

(-0.01101)2 (-23/64)102.1.2數(shù)的機器碼表示—(簡化版)(27)10=(+11011)2原碼:00011011反碼:00011011補碼:00011011移碼:100110112.1.2數(shù)的機器碼表示—(簡化版)(-103)10=(-1100111)2

原碼:11100111反碼:10011000補碼:10011001移碼:000110012.1.2數(shù)的機器碼表示—(簡化版)(-0.01101)2原碼:1.0110100反碼:1.1001011補碼:1.1001100移碼:0.1001100說明:式子中的小數(shù)點只為人們方便查看是小數(shù)之用,實際的機器中并不會保存。2.1.2數(shù)的機器碼表示—(簡化版)(-23/64)10=(-0.010111)2

原碼:1.0101110反碼:1.1010001補碼:1.1010010移碼:0.10100102.1.2數(shù)的機器碼表示—(完整版)用公式的形式描述原碼反碼補碼和移碼1、原碼表示法—定點整數(shù)定點整數(shù)X0X1X2…Xn(x0為符號位)[x]原=x2n>x≥0

2n-x0≥x>-2n說明:有正0和負0之分范圍-(2n-1)~2n–1例:x=+11001110n=8 [x]原=011001110

[-x]原=111001110X為負,-x相當(dāng)于加上其絕對值1、原碼表示法—定點小數(shù)定點小數(shù)x0.x1x2…xn[x]原=x1>x≥0

1-x0≥x>-1有正0和負0之分范圍-(1-2-n)~1-2-n例:x=+0.11001110[x]原=0.11001110[-x]原=1.1100111094原碼表示定點小數(shù)的臨界值x=0.00...0

x=1.00...0

x=0正0和負0都是0x=0.11...1x=1-2-n最大正數(shù)x=0.00...01x=2-n

最接近0的正數(shù)x=1.00...01

x=-2-n最接近0的負數(shù)x=1.11...1

x=-(1-2-n)

最小負數(shù)1、原碼表示法

原碼特點:表示簡單,易于同真值之間進行轉(zhuǎn)換,實現(xiàn)乘除運算規(guī)則簡單。進行加減運算十分麻煩。定點小數(shù)表示:x0.x1x2…xn

定義:[X]反

=定點整數(shù)表示:x0x1x2…xn定義:[X]反

=X

(2-2-n

)+X0≤X<1-1<X≤0X(2n+1–1)+X0≤X<2n

-2n<X≤02、反碼2、反碼Egx=+1011011[x]原=01011011用1個字節(jié)存儲

[x]反=01011011x=-1011011[x]反=28-1+x=100000000-1-1011011=101001003、補碼補碼是在“模”和“同余”的概念下導(dǎo)出的?!澳!笔侵敢粋€計量系統(tǒng)的計量范圍,即產(chǎn)生“溢出”的量。以時鐘為例,如下頁圖:5-2=3,5+10=3-2和10同余,以12為模時鐘定位在12點,向后退2個小時和向前撥10個小時得到的效果是相同的3、補碼現(xiàn)在是北京時間3點整,而時鐘卻指向5點。5-2=35+10=3(5+10=15,15-12=3,12自動丟失。12就是模)3、補碼繼續(xù)推導(dǎo):

5-2=5+10(MOD12)

5+(-2)=5+10(MOD12)

-2=10(MOD12)結(jié)論:可以說:在模為12的情況下,-2的補碼就是10。一個負數(shù)用其補碼代替,同樣可以得到正確的運算結(jié)果。借用補碼機制,可在計算機運算中將減法轉(zhuǎn)換為加法運算。3、補碼具體地,在計算機中,機器能表示的數(shù)據(jù)位數(shù)是一定的,其運算都是有模運算。如果是n位整數(shù),其模為2n+1。如果是n位小數(shù),其模為2。若運算結(jié)果超出了計算機所能表示的數(shù)值范圍,則只保留它的小于模的低n位的數(shù)值,超過n位的高位部分就自動舍棄了。3、補碼定義:正數(shù)的補碼就是正數(shù)的本身,負數(shù)的補碼是原負數(shù)加上模。計算機運算受字長限制,屬于有模運算.3、補碼定點整數(shù)定點整數(shù)x0x1x2…..xn以2n+1為模[x]補=x2n>x>02n+1+x0≥x≥-2n示數(shù)范圍:-2n~2n-13、補碼定點小數(shù)定點小數(shù)x0.x1x2…..xn,以2為模[x]補=

x1>x≥02+x0≥x≥-1示數(shù)范圍:-1~1-2-n3、補碼例:x=-1101001[X]補=28+X=100000000+(-1101001)=10010111x=-0.1101001[X]補=2+X=10+(-0.1101001)=1.00101113、補碼例:x=-0.1011[x]補=10+x=10.0000-0.1011=1.0101y=-0.01111[y]補=10+y=10.00000-0.01111=1.100013、補碼思考:如何通過補碼求原碼?例如上題例子。由補碼求原碼,依照用原碼求補碼的方法。規(guī)則相同!4、移碼常用的是針對定點有符號整型數(shù)據(jù)x=x0x1x2……xn,移碼的定義是

[x]移=2n+x,-2n≤x<

2n移碼的性質(zhì):⒈最高位為符號位。⒉0有唯一編碼。⒊保持了數(shù)據(jù)原有的大小順序。⒋移碼只用于浮點數(shù)的階碼部分,故一般只用于表示整數(shù)。4、移碼若一定要表示小數(shù):x=x0.x1x2……xn,移碼的定義是

[x]移=1+x,

–(1-2-n)

≤x<1-2-n4、移碼eg.X=+0000111(1個字節(jié)存儲)[x]移=27+0000111=10000000+0000111=10000111X=-1000111[x]移=27-1000111=10000000–1000111=00111001機器碼表示練習(xí)題例:寫出下列定點8位機器碼的真值。[x1]原=0.0110101 [x2]原=10000101[x3]反=1.1010101 [x4]反=0.0000101[x5]補=1.0010101 [x6]補=0.1000101[x7]補=1.0000000 [x8]補=100000000[x9]補=00000001[x10]補=10110011[x11]移=1.0010101[x12]移=0.0000101例:寫出下列定點8位機器碼的真值。[x1]原=0.0110101 [x2]原=10000101解:x1=0.0110101x2=-101例:寫出下列定點8位機器碼的真值。[x3]反=1.1010101 [x4]反=0.0000101解:X3=-0.0101010X4=0.0000101例:寫出下列定點8位機器碼的真值。[x5]補=1.0010101 [x6]補=0.1000101解:x5=-0.1101011x6=0.1000101例:寫出下列定點8位機器碼的真值。[x7]補=1.0000000 [x8]補=10000000解:x7=-1X8=-128例:寫出下列定點8位機器碼的真值。[x9]補=00000001[x10]補=10110011解:x9=1x10=-1001101例:寫出下列定點8位機器碼的真值。[x11]移=1.0010101[x12]移=0.0000101解:x11=0.0010101x12=-0.11110112.1.2數(shù)的機器碼表示【例2.7】將十進制真值(-127,-1,0,+1,+127)列表表示成二進制數(shù)及原碼、反碼、補碼、移碼值。

補碼形式的八位二進制數(shù)的示數(shù)范圍討論:符號位1位,數(shù)值位7位即-27~

27-1-128~127-128怎樣表示?原碼十進制數(shù)0111111112701111110126…………00000011300000010200000001100000000010000000-010000001-110000010-210000011-3…………11111110-12611111111-127原碼反碼補碼十進制數(shù)011111110111111101111111127011111100111111001111110126…………0000001100000011000000113000000100000001000000010200000001000000010000000110000000010000000:-00000000011111111:-0000000000100000011111111011111111-1100000101111110111111110-2100000111111110011111101-3…………111111101000000110000010-126111111111000000010000001-12710000000-1282.1.2數(shù)的機器碼表示到底為什么這么折騰?非要搞個補碼出來?補碼的設(shè)計目的是: ⑴使符號位能與有效值部分一起參加運算,從而簡化運算規(guī)則。 ⑵使減法運算轉(zhuǎn)換為加法運算,進一步簡化計算機中運算器的線路設(shè)計。 ⑶消除正零負零干擾,最大負數(shù)向外拓展1位。所有這些轉(zhuǎn)換都是在計算機的最底層進行的。2.1.2數(shù)的機器碼表示舉例:一個字節(jié)內(nèi)的加減運算若直接用原碼:00000001+10000010=100000111+(-2)=-3用補碼:00000001+11111110=111111111+(-2)=-12.1.2數(shù)的機器碼表示【例2.6】以定點整數(shù)為例,用數(shù)軸形式說明原碼、反碼、補碼表示范圍和可能的數(shù)碼組合情況。2.1.2數(shù)的機器碼表示【例8】設(shè)機器字長16位,定點表示,尾數(shù)15位,數(shù)符1位,問:(1)定點原碼整數(shù)表示時,最大正數(shù)是多少?最小負數(shù)是多少?(2)定點原碼小數(shù)表示時,最大正數(shù)是多少?最小負數(shù)是多少?⑶如果均改用補碼,是何情況?2.1.2數(shù)的機器碼表示解答:(1)定點原碼整數(shù)表示最大正數(shù)值=(215-1)10=(+32767)10最小負數(shù)值=-(215-1)10=(-32767)10(2)定點原碼小數(shù)表示最大正數(shù)值=(1-2-15)10=(+0.111...11)2最小負數(shù)值=-(1-2-15)10=(-0.111..11)22.1.2數(shù)的機器碼表示(3):改為補碼:最大正最小負定點整數(shù):215-1-215

32767-32768定點小數(shù):1-2-15

-12.1.2數(shù)的機器碼表示回想:C語言中的幾個變量定義short:半個機器字長,16位:-32768~32767int:一個機器字長,32位:-2147483648~2147483647long:兩個機器字長,64位-9,223,372,036,854,775,808~9,223,372,036,854,775,807(對于32位機)2.1.2數(shù)的機器碼表示【例9】假設(shè)由S,E,M三個域組成的一個32位二進制字所表示的非零規(guī)格化浮點數(shù)x,真值表示為(非IEEE754標準):

x=(-1)s×(1.M)×2E-128

問:它所表示的規(guī)格化的最大正數(shù)、最小正數(shù)、最大負數(shù)、最小負數(shù)是多少?移碼原碼2.1.2數(shù)的機器碼表示1個字節(jié)真值最大的補碼:01111111最小的補碼:100000001個字節(jié)真值最大的移碼:11111111最小的移碼000000002.1.2數(shù)的機器碼表示回顧:對于1個字節(jié)空間整數(shù)移碼的計算方法:[x]移=27+xE=10000000+x=128+x所以x=E-1282.1.2數(shù)的機器碼表示(1)最大正數(shù)01111111111111111111111111111111x=[2-2-23]×2127(2)最小正數(shù)00000000000000000000000000000000x=1.0×2-128(3)最小負數(shù)11111111111111111111111111111111x=-[2-2-23]×2127(4)最大負數(shù)10000000000000000000000000000000x=-1.0×2-128

2.1.3字符和字符串(非數(shù)值)的表示方法符號數(shù)據(jù):字符信息用數(shù)據(jù)表示,如ASCII等;字符表示方法ASCII:用一個字節(jié)來表示,低7位用來編碼(128),最高位為校驗位10個十進制數(shù)碼26個英文字母一定量專用符號:控制碼2.1.3字符和字符串(非數(shù)值)的表示方法ASCII(AmericanStandardCodeforInformationInterchange)共128個常用字符,用7位二進制編碼,從0到127控制字符:0~32、127計34個;普通字符:94個。2.1.3字符和字符串(非數(shù)值)的表示方法例如:“a”字符編碼為1100001,對應(yīng)的十進制數(shù)是97;

換行0AH10

回車0DH13

空格 20H 32‘0’~‘9’30H~39H 48~57‘A’~‘Z’41H~5AH 65~90‘a(chǎn)’~‘z’ 61H~7AH 97~1222.1.3字符和字符串(非數(shù)值)的表示方法2.1.3字符和字符串(非數(shù)值)的表示方法2、字符串的表示 字符串是指連續(xù)的一串字符,通常方式下,它們占用主存中連續(xù)的多個字節(jié),每個字節(jié)存一個字符。 當(dāng)主存字由2個或4個字節(jié)組成時,在同一個主存字中,既可按從低位字節(jié)向高位字節(jié)的順序存放字符串的內(nèi)容,也可按從高位字節(jié)向低位字節(jié)的次序順序存放字符串的內(nèi)容。2.1.3字符和字符串(非數(shù)值)的表示方法eg.IFA>BTHENREAD(C)漢字編碼體系漢字編碼:漢字是平面結(jié)構(gòu),字數(shù)多,字形復(fù)雜,漢字字符集是一個很大的集合,在人們?nèi)粘I罱煌?,?jīng)常使用的漢字約有6000多個,使用7位二進制編碼是不夠的,因此規(guī)定用16位二進制代碼表示漢字。每個Byte僅用低7位,因此兩個字節(jié)可表示128x128=16384個漢字。為了與標準ASCII碼兼容,每個字節(jié)中都不能再用0-32、127共計34個編碼,所以每個字節(jié)只能有128-34=94個編碼。這樣,雙七位實際能夠表示的字數(shù)是:94×94=8836個。漢字編碼體系漢字輸入碼:由輸入設(shè)備產(chǎn)生的漢字編碼,如區(qū)位碼、國標碼、拼音碼、新全拼、新雙拼、五筆字型碼、簡碼、表形碼、自然碼、智能ABC漢字輸入碼等。如“?!弊?,用全拼,輸入碼為“BAO”,用區(qū)位碼,輸入碼為“1703”,用五筆字型則為“WKS”國標碼:國家漢字標準代碼,簡稱國標碼,是中華人民共和國的中文常用漢字編碼集,GB2312。漢字編碼體系漢字內(nèi)碼:也叫機內(nèi)碼,用于計算機內(nèi)部存儲和處理的漢字編碼,通常由該漢字的國標碼的兩個字節(jié)最高位置“1”形成。漢字字形碼:也叫字模碼,確定一個漢字字形點陣的編碼,用于漢字顯示和打印輸出。保留在存儲介質(zhì)中的全部漢字字形碼稱為字庫。漢字地址碼:表示漢字字形信息在漢字庫中的地址,用于在漢字庫中查找漢字字形信息的漢字地址碼等。漢字編碼體系區(qū)位碼:將字符按其排列位置劃分成94區(qū)×94位,以字符所在區(qū)位編碼。例如:區(qū)位碼4687表示區(qū)號為46,在該區(qū)中的位置為87。區(qū)號區(qū)中位置漢字編碼體系區(qū)位碼的編碼范圍是:0101~9494(0101H~5E5EH)1…………..94 1~9區(qū)

10~15區(qū)空

16~55區(qū)

56~87區(qū)

88~94區(qū)空字母、數(shù)字、各種符號等682個一級漢字3755個二級漢字3008個漢字編碼體系區(qū)位碼可變形為國標碼:國標碼=區(qū)位碼+2020H

國標碼的取值范圍:2121H~7E7EH

國標碼、區(qū)位碼均用兩個字節(jié)組成一個漢字編碼。漢字編碼體系機內(nèi)碼漢字在設(shè)備或信息處理系統(tǒng)內(nèi)部最基本的表達形式。漢字機內(nèi)碼=國標碼+8080H即兩個字節(jié)的最高位置1機內(nèi)碼范圍是:A1A1H~FEFEH漢字編碼體系漢字國標碼漢字內(nèi)碼中8680(0101011001010000)B (1101011011010000)B

華5942(0011101100101010)B (1011101110101010)B“西”的區(qū)位碼是4687,求其內(nèi)碼?十進制區(qū)位碼4687=2E57H(十六進制區(qū)位碼)=4E77H(十六進制國標碼)=CEF7H(十六進制內(nèi)碼)漢字編碼體系漢字字模碼:漢字字形漢字編碼體系漢字編碼體系漢字字模碼也稱字型碼,漢字字模的集合構(gòu)成了漢字庫。漢字地址碼每個漢字字形碼在漢字字庫中的相對位移地址地址碼和機內(nèi)碼要有簡明的對應(yīng)轉(zhuǎn)換關(guān)系輸入字典漢字字庫漢字輸入系統(tǒng)輸入碼內(nèi)碼內(nèi)部處理內(nèi)存通信顯示打印字型碼字型碼字型碼地址碼內(nèi)碼國標碼漢字編碼體系組平面行字位最高位為0基本多文種平面(BMP):0組0平面,包含字母、音節(jié)及表意文字等。例如:‘A’ 41H(ASCII) 00000041H(UCS) ‘大’ 3473H(GB2312) 00005927H(UCS其他漢字編碼UCS碼、Unicode碼、GBK碼、BIG5碼等

國際標準:通用多八位編碼字符集UCS(UniversalCodeSet)世界各種文字的統(tǒng)一的編碼方案,一個字符占4個字節(jié)。分為:漢字編碼體系

Unicode碼

另一國際標準:采用雙字節(jié)編碼統(tǒng)一地表示世界上的主要文字。其字符集內(nèi)容與UCS的BMP相同。

GBK碼

GBK等同于UCS的新的中文編碼擴展國家標準,2字節(jié)表示一個漢字第一字節(jié)從81H~FEH,最高位為1;第二字節(jié)從40H~FEH,第二字節(jié)的最高位不一定是1。

BIG5編碼臺灣、香港地區(qū)普遍使用的一種繁體漢字的編碼標準,包括440個符號,一級漢字5401個、二級漢字7652個,共計13060個漢字。漢字編碼體系數(shù)據(jù)校驗碼奇偶校驗碼:在表示數(shù)據(jù)的N位代碼中增加一位奇偶校驗位,使N+1位中“1”的個數(shù)為奇數(shù)(奇校驗)或偶數(shù)(偶校驗)。大多數(shù)計算機在設(shè)計時允許為每個字符的編碼添加第9位,作為奇偶校驗位。數(shù)據(jù)校驗碼奇校驗當(dāng)除奇偶校驗位以外,“1”的總位數(shù)為偶數(shù)時,將該位置為1偶校驗當(dāng)除奇偶校驗位以外,“1”的總位數(shù)為偶數(shù)時,將該位置為0下面通過一個實際的例子看一下奇偶校驗位的使用方法。數(shù)據(jù)校驗碼字母“A”的ASCII碼為01000001,有偶數(shù)個“1”,因此:使用偶校驗時,校驗位記為0,即:

001000001

使用奇校驗時,校驗位記為1,這樣1的總數(shù)為奇數(shù)個,即:

101000001校驗位數(shù)據(jù)校驗碼字母“C”的ASCII碼為01000011,有奇數(shù)個“1”,因此:使用偶校驗時,校驗位記為1,這樣1的總數(shù)為偶數(shù)個,即:

101000011

使用奇校驗時,校驗位記為0,即:

001000011數(shù)據(jù)校驗碼海明校驗碼:在有效信息代碼中增加校驗位,用來校驗代碼中“1”的個數(shù)是奇數(shù)(奇校驗)還是偶數(shù)(偶校驗),通過奇偶校驗可以發(fā)現(xiàn)代碼傳輸過程中的錯誤并自動校正。應(yīng)用:用于計算機各部件之間信息傳輸以及計算機網(wǎng)絡(luò)的信息傳輸。數(shù)據(jù)校驗碼循環(huán)冗余校驗碼(CRC)用于多位串行數(shù)據(jù)傳送中的檢錯糾錯處理,在

k位數(shù)據(jù)位串行移位輸出的過程中,用帶有異或門控制的移位寄存器形成r個校驗位的值,跟隨在數(shù)據(jù)位之后傳送走。在接收端再對k+r位的碼字進行合法與出錯檢查,若可能則自動改錯。2.2定點加法、減法運算2.2.1補碼加減法2.2.2溢出檢測2.2.3基本的加法和減法器2.2.4十進制加法器2.2.1補碼加減法補碼加法公式:[x+y]補=[x]補+[y]補證明過程略驗證過程可以有2.2.1補碼加法[例11]x=+1001,y=+0101,求x+y=?

解:[x]補=01001,[y]補=00101

[x]補01001

+[y]補00101

————————————————

[x+y]補01110

∴x+y=+11102.2.1補碼加法[例12]x=+1001,y=-0101,求x+y=?

解:[x]補=01001,[y]補=11011

[x]補01001

+[y]補11011

————————————————

[x+y]補100100

∴x+y=+01002.2.1補碼加減法例x=-0.1011,y=0.0111,求x+y[x]補=1.0101[y]補=0.0111[x+y]補=[x]補+[y]補=1.0101+0.0111=1.1100x+y=-0.01002.2.1補碼加法補碼減法公式:

[x-y]補=[x]補+[-y]補

(證明略)計算x-y,須得到[x-y]補2、補碼減法最大的優(yōu)點就是將減法運算轉(zhuǎn)換成加法運算。

[X-Y]補=[X]補+[-Y]補

=[X]補-[Y]補[-Y]補=-[Y]補

(mod2n+1)證明過程略例如X=(11)10=(1011)2Y=(5)10=(0101)2已知字長n=5位,求x-y。[x-y]補=[X]補+[-Y]補=01011+11011=100110=00110=(6)10注:最高1位已經(jīng)超過字長故應(yīng)丟掉待計算的兩個數(shù):x,y均以補碼形式出現(xiàn),現(xiàn)在期望得到[-y]補,怎么轉(zhuǎn)換?注意:已知[y]補求[-y]補方法:連符號位一起各位求反,末位加1。公式:[-y]補=-[y]補+2-n

2-n涵義:最末位的1例:[X]補=11010101解:由[-X]補求[X]補,此規(guī)則同樣適用。[X]補=11010101[-X]補=00001110+100101011提問:由[X]補求[X/2]補?X與X/2X:10110向右移動一位:01011=x/2由[X]補求[X/2]補?將[X]補的符號位和數(shù)值位一起向右移動一次.符號位移走后保持原來的值不變.例:[X]補=10011000[X/2]補=101010001這稱為“算術(shù)移位”[X/4]補和[X/8]補同理[例13]已知x1=-1110,x2=+1101,求:

[x1]補

,[-x1]補

,[x2]補

,[-x2]補。

解:

[x1]補

=10010

[-x1]補

=01101+00001=01110

[x2]補

=01101

[-x2]補

=10010+00001=10011[例14]x=+1101,y=+0110,求x-y=?

解:[x]補=01101

[y]補=00110,[-y]補=11010

[x]補01101

+[-y]補11010

————————————————

[x-y]補100111

∴x-y=+0111以一個字節(jié)存儲練習(xí):-1+0.01-0.1011-0.00102.2.1補碼加減法特殊例子:

x=+0.11011,y=-0.11111,求x-y。[x]補=0.11011[y]補=1.00001輸入的兩個數(shù)是補碼形式[-y]補=0.11111[x-y]補=[x]補+[-y]補=0.11011+0.11111=1.11010x-y=-0.00110判斷?溢出?2.2.2溢出的檢測溢出的檢測可能產(chǎn)生溢出的情況兩正數(shù)加,變負數(shù),上溢(大于機器所能表示的最大數(shù))兩負數(shù)加,變正數(shù),下溢(小于機器所能表示的最小數(shù))2.2.2溢出的檢測例3:x=+0.1011,y=+0.1001,求x+y例4:x=-0.1101,y=-0.1011,求x+y2023/9/20176

[例15]x=+1101,y=+1001,求x+y。

解:[x]補=01011,[y]補=01001

[x]補01011

+[x]補01001

——————————————

[x+y]補10100

兩個正數(shù)相加的結(jié)果成為負數(shù),表示正溢。[例16]x=-1101,y=-1011,求x+y。

解:[x]補

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論