第12章_位運算

第12章_位運算

ID:20908794

大小:285.00 KB

頁數(shù):35頁

時間:2018-10-17

第12章_位運算_第1頁
第12章_位運算_第2頁
第12章_位運算_第3頁
第12章_位運算_第4頁
第12章_位運算_第5頁
資源描述:

《第12章_位運算》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。

1、第十二章位運算6/30/20211主要內(nèi)容12.1位運算符和位運算12.2位運算舉例12.3位段6/30/20212概念位運算是指按二進制位進行的運算。因為在系統(tǒng)軟件中,常要處理二進制位的問題。例如:將一個存儲單元中的各二進制位左移或右移一位,兩個數(shù)按位相加等。C語言提供位運算的功能,與其他高級語言(如PASCAL)相比,具有很大的優(yōu)越性。6/30/20213§12.1位運算符和位運算運算符含義運算符含義&按位與~取反

2、按位或<<左移∧按位異或>>右移(1)位運算符中除~以外,均為二目(元)運算符,即要求兩側各有一

3、個運算量。(2)運算量只能是整型或字符型的數(shù)據(jù),不能為實型數(shù)據(jù)。C語言提供的位運算符有:說明:6/30/2021412.1.1“按位與”運算符(&)按位與是指:參加運算的兩個數(shù)據(jù),按二進制位進行“與”運算。如果兩個相應的二進制位都為1,則該位的結果值為1;否則為0。即:0&0=0,0&1=0,1&0=0,1&1=1例:3&5并不等于8,應該是按位與運算:注意:如果參加&運算的是負數(shù)(如-3&-5),則要以補碼形式表示為二進制數(shù),然后再按位進行“與”運算。00000011(3)&00000101(5)00000001

4、(1)3&5的值得16/30/20215按位與的用途:若想對一個存儲單元清零,即使其全部二進制位為0,只要找一個二進制數(shù),其中各個位符合以下條件:原來的數(shù)中為1的位,新數(shù)中相應位為0。然后使二者進行&運算,即可達到清零目的。(1)清零例:原有數(shù)為00101011,另找一個數(shù),設它為10010100,這樣在原數(shù)為1的位置上,該數(shù)的相應位值均為0。將這兩個數(shù)進行&運算:00101011&10010100000000006/30/20216(2)取一個數(shù)中某些指定位如有一個整數(shù)a(2個字節(jié)),想要取其中的低字節(jié),只需將a

5、與8個1按位與即可。0010110010101100abc000000001111111100000000101011006/30/20217(3)保留一位的方法:與一個數(shù)進行&運算,此數(shù)在該位?。薄<矗篴=84,b=59c=a&b=16例:有一數(shù)01010100,想把其中左面第3、4、5、7、8位保留下來,運算如下:01010100(84)&00111011(59)00010000(16)6/30/2021812.1.2“按位或”運算符(

6、)兩個相應的二進制位中只要有一個為1,該位的結果值為1。即0

7、0=0,0

8、

9、1=1,1

10、0=1,1

11、1=1例:060

12、017,將八進制數(shù)60與八進制數(shù)17進行按位或運算。00110000

13、00001111001111116/30/20219應用:按位或運算常用來對一個數(shù)據(jù)的某些位定值為1。例如:如果想使一個數(shù)a的低4位改為1,只需將a與017進行按位或運算即可。例:a是一個整數(shù)(16位), 有表達式:a

14、0377 則低8位全置為1,高8位保留原樣。6/30/20211012.1.3“異或”運算符(∧)異或運算符∧也稱XOR運算符。它的規(guī)則是:若參加運算的兩個二進制位同號則結果為0(假)異號

15、則結果為1(真)即:0∧0=0,0∧1=1,1∧0=1,1∧1=0即:071∧052=023(八進制數(shù))00111001∧0010101000010011例:6/30/202111(1)使特定位翻轉設有01111010,想使其低4位翻轉,即1變?yōu)椋?,0變?yōu)椋薄?梢詫⑺c00001111進行∧運算,即:∧運算符應用:01111010∧0000111101110101運算結果的低4位正好是原數(shù)低4位的翻轉。可見,要使哪幾位翻轉就將與其進行∧運算的該幾位置為1即可。6/30/202112因為原數(shù)中的1與0進行∧運算得1,

16、0∧0得0,故保留原數(shù)。例如:012∧00=012(2)與0相∧,保留原值00001010∧00000000000010106/30/202113(3)交換兩個值,不用臨時變量例如:a=3,b=4。想將a和b的值互換,可以用以下賦值語句實現(xiàn):a=a∧b;b=b∧a;a=a∧b;a=011(∧)b=100a=111(a∧b的結果,a已變成7)(∧)b=100b=011(b∧a的結果,b已變成3)(∧)a=111a=100(a∧b的結果,a已變成4)6/30/202114①執(zhí)行前兩個賦值語句:“a=a∧b;”和“b=b

17、∧a;”相當于b=b∧(a∧b)。②再執(zhí)行第三個賦值語句:a=a∧b。由于a的值等于(a∧b),b的值等于(b∧a∧b),因此,相當于a=a∧b∧b∧a∧b,即a的值等于a∧a∧b∧b∧b,等于b。a得到b原來的值。即等效于以下兩步:6/30/20211512.1.4“取反”運算符(~)~是一個單目(元)運算符,用來對一個二進制數(shù)按位取反,即將0變1,將1變

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。