第一部分二進制及其運算+_第1頁
第一部分二進制及其運算+_第2頁
第一部分二進制及其運算+_第3頁
第一部分二進制及其運算+_第4頁
第一部分二進制及其運算+_第5頁
已閱讀5頁,還剩75頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

二進制及運算目前計算機內所有的信息都用“0”和“1”兩個數字符號組合的二進制數來表示。計算機中,數值、圖形、文字等各種形式的信息,需要計算機加工處理時,首先必須按一定的法則轉換成二進制①電子器件的實現很容易。電路通常有兩種穩態:開關的合上與斷開、電燈的亮與滅、二極管的導通與截止、高電平與低電平等。②二進制運算簡單。二進制的運算法則簡單,這樣,使得計算機的運算器結構大大簡化,控制簡單。③便于進行邏輯運算。二進制的0,1兩種狀態,可以代表邏輯運算中的“假”和“真”兩種值。④可靠性高。二進制的0,1兩種狀態,在傳輸和處理時不容易出錯。信息還常用十進制、八進制和十六進制編碼,但它們最終要轉換成二進制才能被計算機內部存儲和加工。二進制的優勢位(bit):計算機中表示信息的最小單位,對應于二進制中的一個位字節(Byte):計算機中表示信息的基本單位,8個二進制的位構成一個字節K:1K=210=1024字節(BYTE)兆(M):1M=1024K=1024×1024Byte吉(G):1G=1024MT:1T=1024G存儲器的容量:B,KB,MB,GB,TB,PB,EB,ZB計算機中數據的存儲單位10011010位字節“字”:計算機在同一時間內處理的一組二進制數稱為一個計算機的“字”,而這組二進制數的位數就是“字長”。

字長與計算機的功能和用途有很大的關系,是計算機的一個重要技術指標。字長直接反映了一臺計算機的計算精度,為適應不同的要求及協調運算精度和硬件造價間的關系,大多數計算機均支持變字長運算,即機內可實現半字長、全字長(或單字長)和雙倍字長運算。

早期的微機字長一般是8位和16位,386以及更高的處理器大多是32位。目前市面上的計算機的處理器大部分已達到64位。數據的表示方法和轉換任意一個十進制數A,可以表示為:數據的表示方法和轉換任意一個二進制數B也可以表示為:數據的表示方法和轉換任意一個二進制數C也可以表示為:數據的表示方法和轉換任意一個二進制數D也可以表示為:數據的表示方法位權基數為2數據的表示方法和轉換P.60.表3.1給出了各種進位計數制的對應關系。

十進制二進制八進制十六進制000011112102231133410044510155611066711177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F16100002010計算機的數制逢十進一0~9共十個數字來表示(基數為10)每個數字所處的位置不同,所代表的意義也不同(位權是10的整次冪)1.十進制

1995.121=1×103+9×102+9×101+5×100+1×10-1+2×10-2+1×10-32.二進制基數為二使用兩種不同的數字符號,即0或1逢二進一(11010.101)2=1×24+1×23+0×22+1×21+0×20+1×2-1+0×2-2+1×2-33.八進制基數為8、每位可取0~7中的任意一個數字逢八進一例如,八進制數加法

7+1=10而不等于8八進制(基數為8)表示法在早期的計算機系統中很常見。八進制適用于12位和36位計算機系統(或者其他位數為3的倍數的計算機系統)。

4.十六進制

基數為16組成十六進制數的符號共有16個其中:0~9這十個數由數字0~9來表示10~15這六個數由英文字母A~F表示逢十六進一例如,十六進制數

9+1=A而不等于10F+1=1016進制縮短了二進制數,但保持了二進制數的表達特點。三、數制間的轉換1.二、八、十六進制轉換成十進制

(1010101)2=1×26+0×25+1×24+0×23+

1×22+0×21+1×20

=64+16+4+1=(85)10(16A.B)16=(1×162+6×161+10×160

+11×16-1)10

=(256+96+10+0.69)10

=(362.69)10

(34.6)8=?

2、十進制數轉換成二進制數(a)純整數部分的轉換

“除2取余”

192924222120余1余1余0余0余1(高位)(低位)故:(19)10=(10011)2例1.將(19)10轉換為二進制數。2、十進制數轉換成二進制數(續)(b)純小數部分的轉換

“乘2取整”

例2.將(0.125)10轉換為二進制數。

0.500×21.000(低位)故:(0.125)10=(0.001)20.250×20.125(高位)

×2例二:將0.6875轉換成二進制小數0.6875*21.3750*2

0.7500*21.5000*21.0000由此,(0.6875)10=(0.1011)2將整數部分按正序排列2、十進制數轉換為二進制數(續)

例3.將(19.125)10轉換成二進制數。(19)10=(10011)2

(0.125)10=(0.001)2

故:(19.125)10=(10011.001)2

注意:

并非所有的十進制小數都能用有限位的二進制小數來表示。例4.將(0.63)10轉換為二進制。

0.63×21.26×20.52×21.04×20.08(高位)(低位)因為,小數部分乘以2會無限循環下去,故:(0.63)10=(0.1010)2(近似值)3.二進制與八進制或十六進制之間的轉換二進制與八進制之間的轉換

因為8=23,由此一位八進制由三位二進制構成

(011110111.100010101)2=(367.425)8367.425

(16.327)8=(001110.011010111)2

=(1110.011010111)2

(2)二進制與十六進制間的轉換

同理:

(1110

0101

1010.1011

1001)2

E5A.B9

=(E5A.B9)16(4C.2E)16=(0100

1100.0010

1110)2

4C2E

=(1001100.0010111)2二進制的基本運算二進制的基本運算是邏輯運算邏輯運算是按位進行的邏輯運算主要包括三種基本運算:邏輯加法(又稱“或”運算)邏輯乘法(又稱“與”運算)邏輯否定(又稱“非”運算)。邏輯加法(“或”運算)邏輯加法通常用符號“+”或“∨”來表示。邏輯加法運算規則如下:0+0=0,0∨0=00+1=1,0∨1=11+0=1,1∨0=11+1=1,1∨1=1

邏輯“或門”Cmos邏輯電路邏輯乘法(“與”運算)Cmos邏輯電路邏輯乘法通常用符號“×”或“∧”或“·”來表示。邏輯乘法運算規則如下:0×0=0,0∧0=0,0·0=00×1=0,0∧1=0,0·1=01×0=0,1∧0=0,1·0=01×1=1,1∧1=1,1·1=1邏輯“與門”邏輯否定(“非”運算)Cmos邏輯電路邏輯非運算又稱邏輯否運算。其運算規則為:0=1“非”0等于11=0“非”1等于0

邏輯“非門”無符號數與帶符號數無符號數:

1111

1111

值:255有符號數:

0111

1111

值:127同樣是一個字節,無符號數的最大值是255,而有符號數的最大值是127原因:有符號數中的最高位被挪去表示符號了

帶符號數的表示真值:直接用正號“+”和負號“-”來表示符號的二進制數如:+1011;-1101數的真值形式是一種原始形式,無法直接用在計算機中機器數:一個包括符號位在內的數值的機內編碼叫做機器數,它是數在計算機中表示形式的統稱。例:01010111=+87,11010111=-87對于負數有三種表示方法:原碼、反碼、補碼。帶符號數的表示(小數)1、原碼表示原碼的表示:正數的符號位用0表示,負數的符號位用1表示,尾數用數值表示。原碼的定義:[X]原=X0<=X<11-X-1<X<=0

例:X=+0.1011,[X]原=0.1011;

X=-0.1011,[X]原=1-X=1.0000-(-0.1011)=1.1011

一個字節的有符號數的原碼范圍是:-127~+127帶符號數的表示原碼的特性:

(1)[X]原=符號位+|X|,即原碼的最高位為符號位,尾數部分為數值位(絕對值)。(2)數的原碼有正負零之分,[+0]原=000000000,

[-0]原=100000000。(3)8位原碼的數值范圍為:[+127]原=01111111,[-127]原=11111111。(4)原碼表示與增值轉換方便,但兩異號相加要做減法。為了把減法運算轉換為加法運算,提出了反碼和補碼。帶符號數的表示2、反碼表示1's

Complement

反碼的表示:正數的反碼符號位為0,尾數用數值表示(與原碼相同);負數的反碼為正數值連同符號位按位取反。反碼的定義:[X]反=X0<=X<1(2-2-n)+x-1<X<=0(定點小數)(2n+1-1)+x0≥x>-2n(定點整數)例:X=+0.1011,[X]反=0.1011

X=-0.1011,[X]反=1.0100帶符號數的表示反碼的特性:(1)反碼的最高位為符號位,0為正,1為負(2)零的反碼有正負之分(不唯一)

+0=00000000,-0=11111111;

(3)8位反碼的數值范圍為:[+127]=01111111,[-127]=11111111;

帶符號數的表示3、補碼的表示2's

Complement補碼的表示:正數的補碼與原碼相同,即符號位用0表示,尾數用數值表示,負數的補碼為數的反碼,且在最低為加1,即取反加1。補碼的定義:[X]補=X0<=X<1

2+X-1<=X<=0

2n+1+x=2n+1-|x|

0≥x≥-2n例:X=+0.1011,[X]補=01011;

X=-0.1011,[X]補=10101。帶符號數的表示模與互補的概念:例如,校正時間的方法:標準時間是6點鐘,非標準時間是10點鐘;有兩種校正方法:10-4=6倒撥10+8=6順撥10-4=(10+8)

mod12;稱12為模數,(+8)與(-4)對模12互為余數,或稱同余。同理,在8位二進制中任一負數(-X)的補碼都可以由

28-X來得到。帶符號數的表示及加減運算例,64-10=64+(-10)=

64+[28-10]=64+[256-10]=64+246=5401000000640100000064-00001010-10+11110110+2460011011054(1)0011011054若字長為8位,則補碼所表示的范圍為-128~+127;進行補碼運算時,應注意所得結果不應超過補碼所能表示數的范圍帶符號數的表示補碼的特性:

(1)補碼的最高位為符號位,0為正,1為負(2)0的補碼是唯一的

[+0]補=[-0]補=00000000;(3)兩個數的補碼相加時,結果不超過機器能表示的范圍,可以把符號位與數位同等處理,即機器數的符號位與數值位都是正確的補碼表示。即:[X+Y]補=[X]補+[Y]補機器數的運算一、原碼運算

(1)原碼中的符號位僅用來表示數的正、負,不參加運算

(2)原碼運算時,首先比較兩個數的符號兩數的符號相同,將兩個數的數值相加,最后給結果附上相應的符號

兩數的符號不同,則需比較兩數的數值大小,然后將數值較大的數減去數值較小的數,并將數值較大的數的符號作為最后結果的符號。例:

已知S1=

0.1001,S2=-0.0101,求[S2+S1]原和[S2-S1]原。解:[S2+S1]原=[(-0.0101)+(0.1001)]原由于S1和S2的符號不同,并且的S1絕對值大于S2的絕對值,因此要進行S1減S2的運算,其結果為正。0.1001-)0.01010.0100原碼表示法是最好理解的,但是,在計算機中采用原碼進行算術運算時比較麻煩,而且,這種方法對于“0”的表示不唯一。例:

已知S1=

0.1001,S2=-0.0101,求[S2+S1]原和[S2-S1]原。解:[S2-S1]原=

[(-0.0101)-(0.1001)]原由于S1和S2的符號相同,因此,實際上要進行Sl加S2的運算,其結果為負。0.0101+)0.10010.1110故其真值為S2-S1

=-0.1101機器數的運算二、反碼運算反碼加、減運算規則:[S2+S1]反=[S2]反+[S1]反[S2-S1]反=[S2]反+[-S1]反采用反碼進行加、減運算時,無論進行兩數相加還是兩數相減,均可通過加法實現。機器數的運算反碼的加、減運算規則表明:兩數和的反碼等于兩數的反碼之和,而兩數差的反碼也可以用加法來實現。運算時,符號位和數值位一樣參加運算,如果符號位產生進位,則需將此進位加到和數的最低位,稱之為“循環進位”。運算結果的符號位為0時,說明是正數的反碼,與原碼相同;運算結果的符號位為1時,說明是負數的反碼,應再對運算結果求反碼,才得到原碼。例:

已知S1=

0.1001,S2=-0.0101,求[S2+S1]反和[S2-S1]反。解:

[S2+S1]反=[S2]反+[S1]反=

1.1010+0.10011.1010+)0.100110.00111-------循環進位0.0100+)由于答案符號位為0,故其真值為S2+S1=

0.0100例:

已知S1=

0.1001,S2=-0.0101,求[S2+S1]反和[S2-S1]反。又

[S2-S1]反=

[S2]反+[-S1]反=

1.1010+1.01101.1010+)1.011011.00001-------循環進位1.0001+)由于答案符號位為1,說明是負數的反碼,應再對運算結果求反碼,才得到原碼。則其真值為S2-S1=

-0.1110機器數的運算三、補碼運算

補碼運算同反碼運算一樣,兩數差的補碼可以用兩數補碼的加法來實現。補碼加、減運算規則是:[S2+S1]補=

[S2]補+[S1]補[S2-S1]補=

[S2]補+[-S1]補機器數的運算三、補碼運算運算時,符號位和數值位一樣參加運算

如果符號位產生了進位,則此進位可“略去”運算結果符號位為0時,說明是正數的補碼,與原碼相同。

運算結果符號位為1,說明是負數的補碼,應對結果再求補碼才得原碼。例:

已知S1=

0.1001,S2=

-0.0101,求[S2+S1]補和[S2-S1]補。解:

[S2+S1]補=

[S2]補+[S1]補=

1.1011+0.10011.1011+)0.100110.0100略去0.0100由于答案符號位為0,故其真值為S2+S1=

0.0100例:

已知S1=

0.1001,S2=

-0.0101,求[S2+S1]補和[S2-S1]補。又

[S2-S1]補=

[S2]補+[-S1]補=

1.1011+1.01111.1011+)1.011111.0010略去1.0010運算結果的符號位為1,說明是負數的補碼,應對補碼求補后才能得到原碼,即[S2-S1]原=

1.1110由于其符號位為1,真值為S2-S1=-0.1110從上述的討論可以看出,原碼、反碼和補碼各有優缺點。原碼表示法簡單方便,但原碼減法必須做真正的減法,不能用加法來代替,因此實現原碼運算所需的邏輯電路比較復雜。反碼和補碼的優點是只需用加法邏輯電路便可實現。并且用補碼進行減法運算很方便,它只需進行一次算術相加。而用反碼進行減法運算,若符號位產生進位就需進行兩次算術相加。而且反碼還有一個缺點,就是具有兩個零值,這容易在計算過程中產生歧意。思考:整數運算例:

設S1和S2為單字節數,已知S1=24D,S2=-16D,求[S2+S1]補和[S2-S1]補。解:

[S1]補=00011000[S2]補=11110000[S2+S1]補=

[S2]補+[S1]補00011000+)11110000100001000略去00001000思考:整數運算例:

設S1和S2為單字節數,已知S1=24D,S2=-16D,求[S2+S1]補和[S2-S1]補。解:

[-S1]補=11101000[S2]補=11110000[S2-S1]補=

[S2]補+[-S1]補11110000+)11101000111011000略去11011000求補碼得:10101000帶符號數的表示及加減運算二、加減法運算的溢出處理由于機器碼的位數通常是給定的(如16位字長,32位字長),因此,數的表示范圍是有限的,若兩數進行加減運算的結果超出給定的取值范圍,就會產生溢出。例,X=+0.1011,Y=+0.1001,X+Y=?[X]補0.1011+[Y]補0.10011.0100此時,兩個正數相加的結果成為負數,顯然是錯誤的。帶符號數的表示及加減運算又如,X=-0.1101,Y=-0.1011,X+Y=?[X]補1.0011+[Y]補1.01010.1000兩個負數相加的結果成為正數,這同樣是錯誤的。為判斷溢出是否產生,可以采用兩種檢測方法。帶符號數的表示及加減運算1、變形碼操作檢測方法:每個操作數在運算時都采用兩個符號位,正數用00表示,負數用11表示,兩個符號位與碼值一起參加運算;若運算結果的兩個符號位的代碼不一致時表示溢出,兩個符號位代碼一致時,沒有溢

溫馨提示

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

評論

0/150

提交評論