第11章 位運(yùn)算

第11章 位運(yùn)算

ID:20604061

大小:113.00 KB

頁數(shù):30頁

時(shí)間:2018-10-14

第11章 位運(yùn)算_第1頁
第11章 位運(yùn)算_第2頁
第11章 位運(yùn)算_第3頁
第11章 位運(yùn)算_第4頁
第11章 位運(yùn)算_第5頁
資源描述:

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

1、第10章位運(yùn)算11.1位運(yùn)算符11.2位段11.3應(yīng)用舉例11.1位運(yùn)算符當(dāng)兩個(gè)運(yùn)算對象的位數(shù)不同時(shí),系統(tǒng)將自動進(jìn)行如下處理:先將兩個(gè)運(yùn)算數(shù)右端對齊。再將位數(shù)不足的一個(gè)運(yùn)算對象向高位擴(kuò)充,即:無符號數(shù)和正整數(shù)左端用0補(bǔ)齊;負(fù)數(shù)左端用1補(bǔ)齊;然后對位數(shù)相等的這兩個(gè)數(shù)按位進(jìn)行運(yùn)算?!鞍次慌c”運(yùn)算(&)“按位與”運(yùn)算是將參加運(yùn)算的兩操作對象,按對應(yīng)的二進(jìn)制位分別進(jìn)行“邏輯與”運(yùn)算。運(yùn)算規(guī)則為:只有兩個(gè)相應(yīng)位都為1時(shí),該位的運(yùn)算結(jié)果才為1;兩個(gè)相應(yīng)位的值相異或均為0時(shí),該位的運(yùn)算結(jié)果為0。11.1位運(yùn)算符【例11.

2、1】求表達(dá)式12&10的值。main(){charx=12,y=10;printf(“%d,%d”,x,y);x=x&y;printf(“%d,%d”,x,y);}輸出結(jié)果為:12,108,1011.1位運(yùn)算符按位與運(yùn)算用途:清零:若想將某個(gè)存儲單元清零,只需將這個(gè)存儲單元的值與零進(jìn)行“與”運(yùn)算?!纠?1.2】分析下面程序結(jié)果main(){charch=46;printf("%d",ch);ch=ch&0;printf("%d",ch);}輸出結(jié)果為:46011.1位運(yùn)算符獲取指定位:如果要

3、想獲取某數(shù)據(jù)X的指定位,則可以用一個(gè)數(shù)與X進(jìn)行“與”運(yùn)算,此數(shù)在與指定位相同的位上的值為1,其余各位為0?!纠?1.3】從鍵盤輸入一個(gè)整數(shù),判斷此數(shù)是否能被2整除。#includemain(){intx;printf("Pleaseinputanumber:");scanf("%d",&x);if((x&0x01)==0)/*通過與運(yùn)算,只保留該數(shù)的最低位,然后判斷其是否為0*/printf("%dcanbedividedby2exactly!",x);/*最低位為0,該數(shù)能被2整除*

4、/elseprintf("%dcan’tbedividedby2exactly!",x);/*最低位為1,不能被2整除*/}11.1位運(yùn)算符“按位或”運(yùn)算(

5、)按位或運(yùn)算是將參加運(yùn)算的兩操作對象,按對應(yīng)的二進(jìn)制位分別進(jìn)行“邏輯或”運(yùn)算。運(yùn)算規(guī)則為:只有兩個(gè)相應(yīng)位都為0時(shí),該位的運(yùn)算結(jié)果才為0,其它情況下,結(jié)果全為1?!纠?1.4】求表達(dá)式12

6、10的值。main(){charx=12,y=10;printf(“%d,%d”,x,y);x=x

7、y;printf(“%d,%d”,x,y);}輸出結(jié)果

8、為:12,1014,1011.1位運(yùn)算符用途:按位“或”經(jīng)常用來對一個(gè)數(shù)據(jù)的某些位置1。【例11.5】把整數(shù)x(8位)的低4位置1,高4位不變。main(){charx=67;printf(“%d”,x);x=x

9、15;printf(“%d”,x);}輸出結(jié)果為:677911.1位運(yùn)算符“按位異或”運(yùn)算(^)按位或運(yùn)算是將參加運(yùn)算的兩操作對象,按對應(yīng)的二進(jìn)制位分別進(jìn)行“按位異或”運(yùn)算。運(yùn)算規(guī)則為“按位異或”的應(yīng)用:參加運(yùn)算的兩個(gè)運(yùn)算量,如果兩個(gè)相對應(yīng)位上的值不同,則該位的結(jié)果為1;如果對應(yīng)位上的值相

10、同,則該位的結(jié)果為0?!鞍次划惢颉钡膽?yīng)用使特定位翻轉(zhuǎn),即使指定的位求反。【例11.6】設(shè)x=46,將其高4位保留原樣,低4位各位求反。main(){charx=46;printf(“%d”,x);x=x^15;printf(“%d”,x);}11.1位運(yùn)算符輸出結(jié)果為:4633對變量置零。每一個(gè)數(shù)與它自身進(jìn)行“異或”運(yùn)算,結(jié)果各位均為零。即:x^x=0?!纠?1.7】不用臨時(shí)變量,交換兩個(gè)變量的值。main(){charx=12,y=10;printf(“%d,%d”,x,y);x=x^y;y=

11、y^x;x=x^y;printf(“%d,%d”,x,y);}輸出結(jié)果為:12,1010,1211.1位運(yùn)算符“按位取反”運(yùn)算(~)“按位取反”運(yùn)算符“~”是唯一的一個(gè)單目位運(yùn)算符,用來將一個(gè)二進(jìn)制數(shù)按位取反,即將1變0,將0變1?!纠?1.8】給出一個(gè)數(shù)的原碼,求出該數(shù)的補(bǔ)碼。main(){unsignedinta;/*聲明一個(gè)無符號的整數(shù)a*/unsignedintgetbits(unsigned);/*函數(shù)聲明*/printf("Inputanoctalnumber:");scanf("%o"

12、,&a);/*以八進(jìn)制形式輸入一個(gè)無符號的整數(shù)*/printf("result:%o",getbits(a));/*以八進(jìn)制形式輸出*/}11.1位運(yùn)算符unsignedintgetbits(unsignedvalue)/*求一個(gè)二進(jìn)制數(shù)的補(bǔ)碼*/{unsignedintz;z=value&10000000;if(z==10000000)z=~value+1;/*對負(fù)數(shù)求其補(bǔ)碼*/elsez=value;/*正數(shù)

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

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

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