運算基礎二進制的運算和計算機中的四則運算_第1頁
運算基礎二進制的運算和計算機中的四則運算_第2頁
運算基礎二進制的運算和計算機中的四則運算_第3頁
運算基礎二進制的運算和計算機中的四則運算_第4頁
運算基礎二進制的運算和計算機中的四則運算_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1.2運算基礎二、二進制的運算和計算機中的四則運算一、各種進制數的表示和它們之間的轉換三、各種數制的編碼、字符編碼、BCD碼、

ASCII碼、漢字編碼四、邏輯電路和邏輯運算計算機中的各種數制在計算機內部,信息廣泛采用二進制形式表示,有時還會使用十進制、八進制、十六進制。2進制,用兩個阿拉伯數字:0、1;8進制,用八個阿拉伯數字:0、1、2、3、4、5、6、7;10進制,用十個阿拉伯數字:0、1、2、3、4、5、6、7、8、9;16進制,用十六個阿拉伯數字……等等,阿拉伯人或說是印度人,只發明了10個數字啊?16進制就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。對任意進位制數都可以寫成按權展開的多項式的和的形式:十進制使用廣泛,它主要用在計算機外部。特點:一是十進制由十個不同的數符組成:0、1、2、3、4、5、6、7、8、9,即基數為“10”;二是十進制遵循每相鄰兩位“逢十進一”的原則。二進制是用于計算機內部描述各種信息的一種數制。特點:一是二進制由“0”和“1”兩個符號構成,即基數為2;二是每相鄰兩位遵循“逢二進一”的原則。K=Kn-1×Rn-1+Kn-2×Rn-2+……+K1×R1+K0×R0+K-1×R-1+K-2×R-2+……=Ki×Ri式中:i--數位;m,n--正整數;

R--基數;Ki--第i位數碼。為什么需要八進制和十六進制?

編程中,我們常用的還是10進制……必竟C/C++是高級語言。比如:inta=100,b=99;

不過,由于數據在計算機中的表示,最終以二進制的形式存在,所以有時候使用二進制,可以更直觀地解決問題。但,二進制數太長了。比如int類型占用4個字節,32位。比如100,用int類型的二進制數表達將是:000000000000000001100100面對這么長的數進行思考或操作,沒有人會喜歡。用16進制或8進制可以解決這個問題。因為,進制越大,數的表達長度也就越短。不過,為什么偏偏是16或8進制,而不其它的,諸如9或20進制呢?

2、8、16,分別是2的1次方,3次方,4次方。這一點使得三種進制之間可以非常直接地互相轉換。8進制或16進制縮短了二進制數,但保持了二進制數的表達特點。1)二進制數用B(Binary),八進制數用O(Octonary),O也可用Q表示,十進制數用D(decimal),十六進制數用H(Hexadecimal)表示.:101B,123Q,789,10CEH分別表示二進制、八進制、十進制和十六進制數2)給數加括號并加數字下標如(1001)2,,(2357)8,(8790)10,(1AFF)16分別表示二進制、八進制、十進制和十六進制。書寫規則常用的書寫方法有兩種:應該還有其他寫法,如c++中的表示等。數制之間的轉換下面是豎式:將01100100換算成十進制第0位0*20

=

0第1位0*21

=

0第2位1*22

=

4第3位0*23

=

0第4位0*24

=

0第5位1*25

=32第6位1*26

=64第7位0*27

=

0

+---------------------------

100

2進制數轉換為10進制數用橫式計算為:0*20+0*21+1*22+1*23+0*24+1*25+1*26+0*27=100

0乘以多少都是0,所以我們也可以直接跳過值為0的位:1*22+1*23+

1*25+1*26=100二進制數00101010十進制數4225+23+21=42轉換方法:e.g110進制數轉換為2進制數給你一個十進制,比如:6,如果將它轉換成二進制數呢?10進制數轉換成二進制數,這是一個連續除2的過程:把要轉換的數,除以2,得到商和余數,將商繼續除以2,直到商為0。最后將所有余數倒序排列,得到數就是轉換結果。十進制數58二進制數00111010轉換方法:

2|58……02|1……12|29……12|14……02|7……12|3……102|1……1e.g2取余數對應二進制位數223……余1……K0最低位211……余1……K125……余1……K222……余0……K321……余1……K4最高位

即:23D=10111B總結:十進制整數轉換成二進制數用“除2取余倒讀法”轉換成其它進制數就可概括為“除R取余倒讀法”。例:十進制數23轉換成二進制數對應二進制位數取整數K-1最高位1K-21K-30K-4最低位10.8125×

21.62500.6250×

21.25000.2500×

20.50000.5000×

21.0000即:0.8125D=0.1101B總結:十進制數轉換成其它進制數方法“乘R取整順讀”例:將十進制數0.8125轉換成對應的二進制數十六進制數轉換成十進制數十六進制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方……所以,在第N(N從0開始)位上,如果是數X(X大于等于0,并且X小于等于15,即:F)表示的大小為X*16的N次方。假設有一個十六進數2AF5,那么如何換算成10進制呢?用豎式計算:2AF5換算成10進制:

第0位:

5*160=5第1位:

F*161=240第2位:

A*162=2560第3位:

2*163=8192

+-------------------------------------

10997

直接計算就是:5*160

+F*161+A*162+2*163=10997(別忘了,在上面的計算中,A表示10,而F表示15)現在可以看出,所有進制換算成10進制,關鍵在于各自的權值不同假設有人問你,十進數1234為什么是一千二百三十四?你盡可以給他這么一個算式:1234=1*103+2*102+3*101+4*100三位組合法:把二進制數以小數點為中心,分別向左、右每三位分為一組,不夠補零;然后,每組用等值的八進制數碼表示。例:將二進制數101.1011轉換成等值八進制數.(101.1011)2=101.101

100=(5.54)8分解三位法:把八進數的各位依次用對應的三位二進制數碼表示。例:將八進制數12.56轉換成等值二進制數(12.56)8=001010.101110=(1010.10111)2二進制數和八進制數之間的轉換與二進制轉換成八進制類似用“四位組合法和分解四位法”例:將二進制數101110轉換成等值十六進制數。(101110)2=0010

1110=(2E)16將十六進制數5.B8轉換成等值二進制數分別轉換成等值(5.B8)16=0101.1011

1000=(101.10111)2二進數與十六進制數之間的轉換二進制十六進制十進制BCD碼00000000000001110001001022001000113300110100440100010155010101106601100111770111100088100010019910011010A101011B111100C121101D131110E141111F15數碼對照表機器數:“數”以某種方式存儲在計算機中,一般稱為機器數。機器數的范圍一個計算機的字長為8位或16位時,它的無符號整數的最大值分別是(11111111)2=(255)102=(65535)102.機器數的符號無符號數:不考慮正負的數,相反稱為有符號數有符號數:計算機中有符號數的符號被數字化了;一般最高位為0表示正號,為1表示負號常用的編碼方式有三種:原碼、反碼、補碼。數據的表示

無符號數與有符號數的區別僅在于,無符號數沒有符號位,全部有效位均用來表示數的大小。在計算機中,無符號數常用來表示地址。1.無符號數(1)原碼符號位用0表示正,用1表示負,數值部分不變。原碼和真值的關系如下式所示:2.有符號數例如:求X=+105的原碼(X)原=01101001

求X=-105的原碼(X)原=11101001

原碼表示簡單直觀,但0的表示不唯一,加減運算復雜,如果兩個異號數相加或兩個同號數相減就要做減法。 (2)反碼正數的反碼與原碼相同,負數的反碼是符號位用1表示,數值位按位取反。原碼和真值的關系如下式所示:例如:X=-4,(X)原=10000100,(X)反=11111011,

(X)反=10010100,則其原碼為11101011,為-107

反碼的缺點與原碼類似,多用在求反邏輯運算中。(3)補碼正數的補碼與原碼相同;

負數補碼為其反碼加1;

0無正負之分;

n位二進制數補碼的表示范圍為+(2n-1-1)~-2n-1

補碼和真值的關系如下:例如:X=-4,(X)原=10000100,(X)補=11111100

補碼運算時可以將符號位參與運算,可以用加法代替減法運算,提高了運算速度。計算機中的有符號二進制數據默認為補碼表示。X為正數時有:(X)原=(X)反=(X)補X為負數時有:(X)補=(X)反+1,((X)補)補=(X)原

((X)反)反=(X)原

補碼的求法1)根據定義求:(X)補=2n+X如X=-,n=8,則(X)補=28+(-)=100000000-=,有減法運算不方便。2)利用原碼求:一個負數的補碼等于其原碼除符號位以外的各位按位取反,再在最低位加1。如X=-,(X)原=,則(X)補=+1=3)簡便的求補:從原碼的最低位起,到出現第一個1以前(包括第一個1)的數字不變,以后逐位取反,但符號位不變。如X=-1010111,(X)原=,則(X)補=X=-,則(X)原=11110000,則(X)補=3.機器數中小數點位置(1)定點數:小數點位置固定不變。浮點數:小數點位置可以浮動。定點數的表示方法純整數:小數點在數的最右方。純小數:小數點在數的符號位之后。純整數和純小數都可以用原碼、反碼、補碼來表示。如:87.37=0.8737×102同樣(110.11)2=(0.11011×23)2

這就是浮點數表示法一個二進制數N

可表示為:N

=±2±P×S(N,P,S均為二進制數)S稱為尾數,即全部的有效數字(一般數值小于1),2前面的±號是尾數的符號,P稱為階碼(一般為整數)即指明小數點的實際位置,2右上方的±號是階碼的符號。浮點數在機器中的編碼分成兩部分,排列如下:階符階碼P尾符尾碼S(2)浮點數的表示方法Pentium將階碼以一種偏置形式存放于格式之中,即將真階碼加上一個常數偏置值才是格式階碼,以保證偏置后的格式階碼恒為正數。單精度的階碼偏置值為+127,雙精度的階碼偏置值為+1023,擴展精度的階碼偏置值為+16383。一個浮點數數的真階碼要通過它的格式階碼減去偏置值而得到。Pentium微處理器支持的浮點格式現在想知道,-5在計算機中如何表示?在計算機中,負數以其正值的補碼形式表達。原碼:一個整數,按照絕對值大小轉換成的二進制數,稱為原碼。比如0000000000是5的原碼。反碼:將二進制數按位取反,所得的新二進制數稱為原二進制數的反碼。取反操作指:原為1,得0;原為0,得1。(1變0;0變1)比如:將0000000000每一位取反,得11111111111111111111111111111010。稱:11111111111111111111111111111010是0000000000的反碼。反碼是相互的,所以也可稱:11111111111111111111111111111010和0000000000互為反碼。現在想知道,-5在計算機中如何表示?(續)補碼:反碼加1稱為補碼。也就是說,要得到一個數的補碼,先得到反碼,然后將反碼加上1,所得數稱為補碼。比如:0000000000的反碼是:11111111111111111111111111111010。那么,補碼為:11111111111111111111111111111010+1=11111111111111111111111111111011所以,-5在計算機中表達為:11111111111111111111111111111011。轉換為十六進制:0xFFFFFFFB(在c中)或0FFFFFFFBH(在匯編中)。BCD(BinaryCodeDecimal)碼:把每1位十進制數用4位二進制編碼表示的數字編碼。它的全名為十進制數的二進制編碼(二-十進制編碼)8421BCD碼:每個十進制位用4位二進制數表示,而4位二進制數的位權分別為8、4、2、1,故命名之。十進制數8421BCD碼十進制數8421BCD碼000008100010001910012001010000100003001111000100014010012000100105010113000100116011014000101007011115000101014.數字編碼8421BCD編碼表例:(36.97)10=(00110110.10010111)BCD(100100110001.01000101)BCD=(931.45)10BCD碼壓縮型BCD碼用4位二進制數表示1位十進制數非壓縮型BCD碼用8位二進制數表示1位十進制數1).ASCII編碼:是由美國國家標準委員會制定的一種包括數字、字母、通用符號在內的字符編碼集。ASCII碼是一種7位二進制編碼,能表示27=128個國際上最通用的西文字符。5.字符型數據的表示ASCII編碼字符集包括4類常用的字符。(1)數字0~9對應的ASCII碼值分別為0110001B~0111001B用十六進制數表示為31H~39H(2)字母包括26個大寫英文字母和26個小寫英文字母。字母A~Z的ASCII碼值為41H~5AH,字母a~z的ASCII碼值為61H~7AH。可以看出:對應的大、小寫字母的ASCII碼值相差20H。(3)通用符號如:+、-、=、*、/、,等共32個。(4)控制字符包括空格SP(20H)、回車CR(0DH)等共34個。注:ASCII碼是一種7位編碼,但它存放時必須占全一字字節,也即占用8位,一般最高位置0,其余7位是ASCII值。ASCII碼表規律:小寫字母大于大寫字母,字母大于數字,所有的字符都大于空格,空格大于所有的控制字符。2).漢字編碼漢字與英文差別很大:象形字、數目多、形和劃差異大計算機常用鍵盤以拼音文字為主解決錄入問題:與拼音鍵盤兼容--外碼(音、形、劃)在計算機中表示漢字需安排一個確定的編碼且與ascii易于區分:GB2312-80,簡國標碼,再到機內碼。二進制的運算和計算機中的四則運算1.算術運算 算術運算是指利用+、-、×、÷、()等符號連接二進制數完成的運算。(自然運算規則與十進制同)

計算機中完成二進制的四則運算 完成二進制的四則運算最終都是進行加法運算。 加法:……;乘法:部分積右移加被乘數或0

減法:加補碼;除法:部分余數左移加除數補碼或01)二進制的加減運算兩個1位二進制數的加、減運算規則加法規則:減法規則:

0+0=00–0=00+1=11–1=1(借位1)

1+0=11–0=11+1=0(進位1)1–1=0多位二進制數加、減運算法則:逢二進一、借一作二例:求11000011B+100101B=?求11000011B-100101B=?

11000011B11000011B+100101B-100101B11101000B10011110B參見p.7二進制的補碼運算規則:[X+Y]

補=[X]補+[Y]補

[X-Y]補=[X]補-[Y]補例:[32+25]補

=[32]補+[25]補=00100000+00111001=[57]補

[32-25]補

=[32]補-[25]補=00100000-=00100000+11100111=(1)00000111=[7]補2)二進制的補碼運算

分析:兩數相加時,只有當

溫馨提示

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

評論

0/150

提交評論