第12章_位運(yùn)算

第12章_位運(yùn)算

ID:20908794

大?。?85.00 KB

頁數(shù):35頁

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

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

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

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

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

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

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

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

6、)兩個(gè)相應(yīng)的二進(jìn)制位中只要有一個(gè)為1,該位的結(jié)果值為1。即0

7、0=0,0

8、

9、1=1,1

10、0=1,1

11、1=1例:060

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

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

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

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

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

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

當(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)系客服處理。