C語言程序設計:第十一章 位 運 算_第1頁
C語言程序設計:第十一章 位 運 算_第2頁
C語言程序設計:第十一章 位 運 算_第3頁
C語言程序設計:第十一章 位 運 算_第4頁
C語言程序設計:第十一章 位 運 算_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第十一章位運算重點:位運算符:&|^~<<>>位段11.1概述字節(jié)與位:計算機內(nèi)存有字節(jié)(Byte)組成,每一個字節(jié)給予一個編碼—地址。一個字節(jié)有若干二進制位(bit)組成。有若干個字節(jié)組成一個存儲單元—字(word)。一般:一個字節(jié)由8個二進制位組成。不同類型的數(shù)有不同的字節(jié)組成的。原碼:簡單地把最高作為符號位,其余各位代表數(shù)值本身的絕對值。+700000111-710000111反碼:一個正數(shù),反碼與原碼相同。一個負數(shù),其反碼:除符號位外其余各位取反,0—11—0127的反碼:01111111-127的反碼:10000000補碼:正數(shù):原碼、反碼、補碼相同。+700000111負數(shù):最高位為1,其余各位為原碼取反,整個數(shù)加1。-7原碼:10000111-7

的補碼:取反:11111000加1:1111100111.2位運算C語言提供如下位運算符:&—按位與|—按位或^—按位異或~—按位取反<<—左移>>—右移注意:除~外,其余全部為雙目運算符位運算符只能用于整型、字符型數(shù)據(jù),不能用于實型數(shù)據(jù)。

“按位與”運算符&規(guī)則:0&0=00&1=01&1=11&0=0例如:3&5=?3的補碼:000000115的補碼:00000101&000000013&5=1按位與的用途:部分位清零:和1進行與運算保持原值,和0進行與則清為0。例如可以把數(shù)01111111的倒數(shù)第三位清零。用11111011和該數(shù)進行與運算。取一個數(shù)中若干位的值。例如可以把數(shù):01101111中的幾位的值保留:00111100則保留中間四位的值:00101100&

“按位或”運算符|規(guī)則:0|0=00|1=11|0=11|1=1例如:060|017=?001100000000111100111111|結(jié)果:

060|017=077“按位或”的用途把一個數(shù)的若干位置1。如:00101000把最后一位置為10000000100101001|“按位異或”運算符^規(guī)則:0^0=00^1=11^0=11^1=0含義:判斷兩位值是否為“異”,為異則為真。例如:071^052=?001110010010101000010011^

結(jié)果:071^052=023“按位異或”的用途^運算可使特定的位翻轉(zhuǎn):011110100000111101110101不使用中間變量,兩變量值交換。a=7(00000111),b=9(00001001)a=a^b;/*000001110000100100001110*/b=b^a;/*000010010000111000000111*/a=a^b;(00001001)

^

取反~規(guī)則:~1=0~0=1例如:~025=?~0000000000010101=1111111111101010(0177752)=-22左移運算<<把一個數(shù)按二進制位全部左移若干位。例如:5<<2=?0000000000000101<<2為0000000000010100為20規(guī)則:左移一位(沒有溢出)相當于乘2如果左移時高位含1,上述規(guī)則不成立。例如

a=64(01000000);a<<1=128;a<<1=0;b=127(01111111);b<<1=254;b<<1=252;b<<1=248;

ex11-01右移>>運算整個數(shù)據(jù)按二進制數(shù)右移若干位,每移一位,低位被舍去。a=15;a>>1=7;00001111>>1相當于00000111每右移一位,相當于整除2。如果是負數(shù),則右移:邏輯右移算術(shù)右移:補符號位。(TurboC)ex11-0211.4位段存儲信息不必用一個或多個字節(jié),也可以一個字節(jié)中存放多個信息。有許多信息可以幾個bit表示就夠。如:男/女,真/假—一個bit可以工作年限—用6bits可以表示。

思考:N位二進制數(shù)可表示的數(shù)范圍?

為了節(jié)省內(nèi)存,可以用位段。定義以位(bit)為單位來定義長度的結(jié)構(gòu)體成員——位段(位域)。例如:structdata_pack{unsigneda:2;unsignedb:6;unsignedc:4;unsignedd:4;intage;}data;位段的引用和結(jié)構(gòu)體成員引用一樣。說明若某一個位段要從另一個字開始,可以插入0長度位段。unsigneda:

溫馨提示

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

評論

0/150

提交評論