版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十一章位運(yùn)算本章要點(diǎn):掌握C語(yǔ)言的位運(yùn)算符能夠使用位運(yùn)算符進(jìn)行基本位運(yùn)算了解C語(yǔ)言的位運(yùn)算的一些應(yīng)用實(shí)例了解位段的基本概念
位運(yùn)算是指進(jìn)行二進(jìn)制位的運(yùn)算,即對(duì)字節(jié)或字節(jié)內(nèi)部的二進(jìn)制位進(jìn)行運(yùn)算。為了便于計(jì)算機(jī)的運(yùn)算,計(jì)算機(jī)中是以補(bǔ)碼形式來(lái)存放數(shù)的。一、位運(yùn)算符用于有符號(hào)和無(wú)符號(hào)的整型數(shù)。包括:charshortintlongunsigned。
位運(yùn)算符共6種:
&|^~<<>>
1.~(按位取反運(yùn)算符)
作用:
對(duì)一個(gè)二進(jìn)制數(shù)逐位取反如:a=15則~a00000000000011111111111111110000a~a實(shí)例11.1
main(){inta=0,b=1;
printf(“%d,%d\n”,~a,~b);
printf(“%d,%d\n”,!a,!b);
printf(“%d,%d\n”,a,b);}運(yùn)行結(jié)果:1,21,00,1
實(shí)例實(shí)例注意:~運(yùn)算和!運(yùn)算的區(qū)別。~的優(yōu)先級(jí)與++,,!同級(jí),結(jié)合性從右至左。注意事項(xiàng)重點(diǎn)1.~(按位取反運(yùn)算符)
作用:
對(duì)一個(gè)二進(jìn)制數(shù)逐位取反如:a=15則~a00000000000011111111111111110000a~a實(shí)例11.1
main(){inta=0,b=1;
printf(“%d,%d\n”,~a,~b);
printf(“%d,%d\n”,!a,!b);
printf(“%d,%d\n”,a,b);}運(yùn)行結(jié)果:1,21,00,1
實(shí)例實(shí)例注意:~運(yùn)算和!運(yùn)算的區(qū)別。~的優(yōu)先級(jí)與++,,!同級(jí),結(jié)合性從右至左。注意事項(xiàng)重點(diǎn)
2.&(按位與運(yùn)算)
作用:對(duì)參加運(yùn)算的兩個(gè)二進(jìn)制數(shù)逐位進(jìn)行邏輯與運(yùn)算,如:a&b
規(guī)則:0&0=0,1&0=0,0&1=0,1&1=1
例如:a=1,b=2,則:a&b=0
000000010000000011111110111111110000000000000000aba&b實(shí)例main(){inta=5,b=12,d;d=a&b;
printf(“%d&%d=%d\n”,a,b,d);}
輸出:5&12=4實(shí)例
2.&(按位與運(yùn)算)
作用:對(duì)參加運(yùn)算的兩個(gè)二進(jìn)制數(shù)逐位進(jìn)行邏輯與運(yùn)算,如:a&b
規(guī)則:0&0=0,1&0=0,0&1=0,1&1=1
例如:a=1,b=2,則:a&b=0
000000010000000011111110111111110000000000000000aba&b實(shí)例main(){inta=5,b=12,d;d=a&b;
printf(“%d&%d=%d\n”,a,b,d);}
輸出:5&12=4實(shí)例
3.|
(按位或運(yùn)算)
作用:
對(duì)參加運(yùn)算的兩個(gè)二進(jìn)制數(shù)逐位進(jìn)行邏輯或運(yùn)算如:a|b
規(guī)則:0|0=0,1|0=1,0|1=1,1|1=1
例如:a=1,b=1,則:a|b=1。000000010000000011111111111111111111111111111111aba|b
4.^(按位異或運(yùn)算)
作用:
對(duì)參加運(yùn)算的兩個(gè)二進(jìn)制數(shù)逐位進(jìn)行邏輯異或運(yùn)算如:a^b
規(guī)則:0^0=0,1^0=1,0^1=1,1^1=0例如:a=15,b=0,則:a^b=15000011110000000000000000000000000000111100000000aba^b結(jié)論
例:main(){inta=3,b=4;a=
a^b
;
b=
b^a
;
a=
a^b;
printf(“%d,%d”,a,b);}
輸出:4,3利用異或運(yùn)算,不必設(shè)置第三個(gè)變量就可以實(shí)現(xiàn)兩個(gè)變量值的交換。重點(diǎn)說(shuō)明:
5.<<(左移位運(yùn)算)
作用:將操作數(shù)的各個(gè)二進(jìn)位順序左移。右端空出的
位補(bǔ)0
,而移出左端之外的位則舍去。如:a<<n表示將a
的各個(gè)二進(jìn)位順序左移n
位(n為正整數(shù))。
例如:a=25
則a<<3
結(jié)果為200
00011001000000001100100000000000aa<<3說(shuō)明:(1)左移運(yùn)算相當(dāng)于乘2運(yùn)算。對(duì)無(wú)符號(hào)數(shù),左移1位相當(dāng)于乘2左移n位,則乘2n(2)對(duì)于用補(bǔ)碼表示的正數(shù),如果左移出的全部是0,且移出后的最高位仍是0。(3)對(duì)于用補(bǔ)碼表示的負(fù)數(shù),如果左移出的全部是1,且移出后的最高位仍是1。
(4)若非上述情況(如:左移出現(xiàn)溢出時(shí)),就不能簡(jiǎn)單地用乘2來(lái)計(jì)算。如:有符號(hào)字符型數(shù)64,當(dāng)它左移2位時(shí),結(jié)果為0。說(shuō)明:
5.<<(左移位運(yùn)算)
作用:將操作數(shù)的各個(gè)二進(jìn)位順序左移。右端空出的
位補(bǔ)0
,而移出左端之外的位則舍去。如:a<<n表示將a
的各個(gè)二進(jìn)位順序左移n
位(n為正整數(shù))。
例如:a=25
則a<<3
結(jié)果為200
00011001000000001100100000000000aa<<3說(shuō)明:(1)左移運(yùn)算相當(dāng)于乘2運(yùn)算。對(duì)無(wú)符號(hào)數(shù),左移1位相當(dāng)于乘2左移n位,則乘2n(2)對(duì)于用補(bǔ)碼表示的正數(shù),如果左移出的全部是0,且移出后的最高位仍是0。(3)對(duì)于用補(bǔ)碼表示的負(fù)數(shù),如果左移出的全部是1,且移出后的最高位仍是1。
(4)若非上述情況(如:左移出現(xiàn)溢出時(shí)),就不能簡(jiǎn)單地用乘2來(lái)計(jì)算。如:有符號(hào)字符型數(shù)64,當(dāng)它左移2位時(shí),結(jié)果為0。補(bǔ)充說(shuō)明
6.>>(右移運(yùn)算符)作用:將操作數(shù)的各個(gè)二進(jìn)位順序右移。左端空出的位補(bǔ)0
或補(bǔ)1
,而移出右端之外的位則舍去。
如:a>>n
表示將a的各個(gè)二進(jìn)位順序右移n
位說(shuō)明
右移運(yùn)算的結(jié)果與操作數(shù)的符號(hào)有關(guān)對(duì)無(wú)符號(hào)數(shù)進(jìn)行右移,左端空出的位一律補(bǔ)0。對(duì)用補(bǔ)碼表示的有符號(hào)數(shù),則隨系統(tǒng)而定。即“邏輯右移”空位一律補(bǔ)0?!八阈g(shù)右移”正數(shù)右移,空位補(bǔ)0。負(fù)數(shù)右移,空位補(bǔ)1。TurboC中采用算術(shù)右移補(bǔ)充說(shuō)明
6.>>(右移運(yùn)算符)作用:將操作數(shù)的各個(gè)二進(jìn)位順序右移。左端空出的位補(bǔ)0
或補(bǔ)1
,而移出右端之外的位則舍去。
如:a>>n
表示將a的各個(gè)二進(jìn)位順序右移n
位說(shuō)明
右移運(yùn)算的結(jié)果與操作數(shù)的符號(hào)有關(guān)對(duì)無(wú)符號(hào)數(shù)進(jìn)行右移,左端空出的位一律補(bǔ)0。對(duì)用補(bǔ)碼表示的有符號(hào)數(shù),則隨系統(tǒng)而定。即“邏輯右移”空位一律補(bǔ)0?!八阈g(shù)右移”正數(shù)右移,空位補(bǔ)0。負(fù)數(shù)右移,空位補(bǔ)1。TurboC中采用算術(shù)右移例如:a=32768000000001000000000000000010000000000000011000000aa>>1a>>1邏輯右移,結(jié)果為16384算術(shù)右移,結(jié)果為
16384算術(shù)右移運(yùn)算相當(dāng)于除2運(yùn)算。右移1
位相當(dāng)于除2。右移n
位,則除2n。
二、優(yōu)先級(jí)
1.位運(yùn)算符的優(yōu)先級(jí)<<&^|~高低結(jié)合性:~
運(yùn)算按從右至左
,其余按從左至右。
例:x&~077x&(~077)x>>2&y<<3(x>>2)&(y<<3)>>2.復(fù)合賦值運(yùn)算
&=,|=,^=,<<=,>>=
如:a&=ba=a&ba<<=m+1a=a<<m+1三、位運(yùn)算的應(yīng)用例11.1
將整數(shù)x的后6位全置0
,其余位不變。取y=0177700或y=~077(八進(jìn)制數(shù))
則x&y
即滿足要求。
main(){intx;
scanf(“%d”,&x);x&=~
077;
printf(“x=%o\n”,x);}
如輸入:256
輸出為:x=400(8進(jìn)制
)
同樣,如將x的后6位全置1,則只需將x=x|077
即可。00000000001111111111111111000000077~
077
例11.2
取一整數(shù)
a從右端開始的4~7
位。158740
(1)
先使a
右移4
位
a>>(7–4+1)即a>>4(2)
設(shè)置一個(gè)低4位全為1,其余位全為0的數(shù)。
~(~0<<4)(3)
將二者進(jìn)行&
運(yùn)算
a>>4
&
~(~0<<4)
結(jié)論voidmain(){unsigneda,b,c,d;
scanf(“%o”,&a);b=a>>4;c=~(~0<<4);d=b&c;
printf(“%o\n
%o\n”,a,d);}
如輸入:331
輸出為:33115
00000000110110010000000000001101ad結(jié)論
任意指定從右端m位開始,取其右面的n位。
只需:b=a>>(m–n+1)c=~(~0<<n)d=b&c
例11.3
將一個(gè)整數(shù)a循環(huán)右移
n位。所謂循環(huán)右移是將
a最右端的位順序移到a
的最左端,而將a
中原左端的各位順序右移到最右端。右移2位
10001
0
0
1
0
1
10001
0
(1)
將
a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度餐飲廚房能源消耗分析與節(jié)能減排承包合同3篇
- 2025年度區(qū)塊鏈技術(shù)研究人員保密協(xié)議及項(xiàng)目合作條款3篇
- 2025年度時(shí)尚服飾品牌代理供貨合作協(xié)議4篇
- 2025年度二零二五年度生態(tài)旅游區(qū)場(chǎng)攤位租賃管理協(xié)議4篇
- 2025年度企業(yè)年會(huì)策劃與演出服務(wù)合同4篇
- 2025年度服裝服飾貨款抵押銷售合同范本4篇
- 2024石材石材石材運(yùn)輸保險(xiǎn)服務(wù)合作協(xié)議3篇
- 2025年度柴油發(fā)動(dòng)機(jī)技術(shù)培訓(xùn)合同4篇
- 2025年度體育賽事場(chǎng)地冠名權(quán)及推廣合作合同4篇
- 二零二五年度防盜門行業(yè)展會(huì)贊助合作合同3篇
- 2024版《53天天練單元?dú)w類復(fù)習(xí)》3年級(jí)語(yǔ)文下冊(cè)(統(tǒng)編RJ)附參考答案
- 2025企業(yè)年會(huì)盛典
- 215kWh工商業(yè)液冷儲(chǔ)能電池一體柜用戶手冊(cè)
- 場(chǎng)地平整施工組織設(shè)計(jì)-(3)模板
- 交通設(shè)施設(shè)備供貨及技術(shù)支持方案
- 美容美發(fā)店火災(zāi)應(yīng)急預(yù)案
- 餐車移動(dòng)食材配送方案
- 項(xiàng)目工程師年終總結(jié)課件
- 一年級(jí)口算練習(xí)題大全(可直接打印A4)
- 電動(dòng)車棚消防應(yīng)急預(yù)案
- 人力資源戰(zhàn)略規(guī)劃地圖
評(píng)論
0/150
提交評(píng)論