C語言程序設(shè)計(jì)教程(第三版)(微課版)課件 第9章 底層程序設(shè)計(jì)_第1頁
C語言程序設(shè)計(jì)教程(第三版)(微課版)課件 第9章 底層程序設(shè)計(jì)_第2頁
C語言程序設(shè)計(jì)教程(第三版)(微課版)課件 第9章 底層程序設(shè)計(jì)_第3頁
C語言程序設(shè)計(jì)教程(第三版)(微課版)課件 第9章 底層程序設(shè)計(jì)_第4頁
C語言程序設(shè)計(jì)教程(第三版)(微課版)課件 第9章 底層程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第9章底層程序設(shè)計(jì)運(yùn)算符含義運(yùn)算符含義

&按位與~取反

|按位或

<<左移∧按位異或

>>右移(1)位運(yùn)算符中除~以外,均為二目(元)運(yùn)算符,即要求兩側(cè)各有一個(gè)運(yùn)算量。(2)運(yùn)算量只能是整型或字符型的數(shù)據(jù),不能為實(shí)型數(shù)據(jù)。C語言提供的位運(yùn)算符有:

說明:位運(yùn)算和位段結(jié)構(gòu)體類型位運(yùn)算:

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等于?,按位與運(yùn)算:注意:如果參加&運(yùn)算的是負(fù)數(shù)(如-3&-5),則要以補(bǔ)碼形式表示為二進(jìn)制數(shù),然后再按位進(jìn)行“與”運(yùn)算。

00000011(3)&

00000101(5)

00000001(1)

3&5的值得1按位與的用途:

若想對(duì)一個(gè)存儲(chǔ)單元清零,即使其全部二進(jìn)制位為0,只要找一個(gè)二進(jìn)制數(shù),其中各個(gè)位符合以下條件:原來的數(shù)中為1的位,新數(shù)中相應(yīng)位為0。然后使二者進(jìn)行&運(yùn)算,即可達(dá)到清零目的。(1)清零。

00101011&

10010100

00000000

例:

(2)取一個(gè)數(shù)中某些指定位。

如有一個(gè)整數(shù)a(2個(gè)字節(jié)),想要取其中的低字節(jié),只需將a與8個(gè)1按位與即可。0010110010101100abc00000000111111110000000010101100

(3)保留一位的方法:與一個(gè)數(shù)進(jìn)行&運(yùn)算,此數(shù)在該位?。?。即:a=84,b=59c=a&b=16例:有一數(shù)01010100,想把其中左面第3、4、5、7、8位保留下來,運(yùn)算如下:

01010100(84)&

00111011(59)

00010000(16)

2“按位或”運(yùn)算符(|)

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

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

00110000|

00001111

00111111

應(yīng)用:按位或運(yùn)算常用來對(duì)一個(gè)數(shù)據(jù)的某些位定值為1。例如:如果想使一個(gè)數(shù)a的低4位改為1,只需將a與017進(jìn)行按位或運(yùn)算即可。3“異或”運(yùn)算符(∧)

異或運(yùn)算符∧也稱XOR運(yùn)算符。它的規(guī)則是:若參加運(yùn)算的兩個(gè)二進(jìn)制位同號(hào)則結(jié)果為0(假)異號(hào)則結(jié)果為1(真)即:0∧0=0,0∧1=1,1∧0=1,1∧1=0即:071∧052=023(八進(jìn)制數(shù))

00111001∧

00101010

00010011

例:(1)使特定位翻轉(zhuǎn)

設(shè)有01111010,想使其低4位翻轉(zhuǎn),即1變?yōu)椋?,0變?yōu)椋???梢詫⑺c00001111進(jìn)行∧運(yùn)算,即:∧運(yùn)算符應(yīng)用:

01111010∧

00001111

01110101

運(yùn)算結(jié)果的低4位正好是原數(shù)低4位的翻轉(zhuǎn)。可見,要使哪幾位翻轉(zhuǎn)就將與其進(jìn)行∧運(yùn)算的該幾位置為1即可。

因?yàn)樵瓟?shù)中的1與0進(jìn)行∧運(yùn)算得1,0∧0得0,故保留原數(shù)。例如:012∧00=012(2)與0相∧,保留原值

00001010∧

00000000

00001010(3)交換兩個(gè)值,不用臨時(shí)變量例如:a=3,b=4。想將a和b的值互換,可以用以下賦值語句實(shí)現(xiàn):a=a∧b;b=b∧a;a=a∧b;

a=011(∧)b=100

a=111(a∧b的結(jié)果,a已變成7)(∧)b=100

b=011(b∧a的結(jié)果,b已變成3)(∧)a=111

a=100(a∧b的結(jié)果,a已變成4)

4“取反”運(yùn)算符(~)

~是一個(gè)單目(元)運(yùn)算符,用來對(duì)一個(gè)二進(jìn)制數(shù)按位取反,即將0變1,將1變0。例如,~025是對(duì)八進(jìn)制數(shù)25(即二進(jìn)制數(shù)00010101)按位求反。

0000000000010101(~)

1111111111101010(八進(jìn)制數(shù)177752)

5左移運(yùn)算符(<<)

左移運(yùn)算符是用來將一個(gè)數(shù)的各二進(jìn)制位全部左移若干位。例如:a=<<2

將a的二進(jìn)制數(shù)左移2位,右補(bǔ)0。若a=15,即二進(jìn)制數(shù)00001111,左移2位得00111100,(十進(jìn)制數(shù)60)

高位左移后溢出,舍棄。

5左移運(yùn)算符(<<)

左移1位相當(dāng)于該數(shù)乘以2,左移2位相當(dāng)于該數(shù)乘以22=4,15<<2=60,即乘了4。但此結(jié)論只適用于該數(shù)左移時(shí)被溢出舍棄的高位中不包含1的情況。假設(shè)以一個(gè)字節(jié)(8位)存一個(gè)整數(shù),若a為無符號(hào)整型變量,則a=64時(shí),左移一位時(shí)溢出的是0,而左移2位時(shí),溢出的高位中包含1。

右移運(yùn)算符是a>>2表示將a的各二進(jìn)制位右移2位,移到右端的低位被舍棄,對(duì)無符號(hào)數(shù),高位補(bǔ)0。例如:a=017時(shí):

a的值用二進(jìn)制形式表示為00001111,舍棄低2位11:a>>2=00000011

右移一位相當(dāng)于除以2

右移n位相當(dāng)于除以2n。6右移運(yùn)算符(>>)在右移時(shí),需要注意符號(hào)位問題:

對(duì)無符號(hào)數(shù),右移時(shí)左邊高位移入0;對(duì)于有符號(hào)的值,如果原來符號(hào)位為0(該數(shù)為正),則左邊也是移入0。如果符號(hào)位原來為1(即負(fù)數(shù)),則左邊移入0還是1,要取決于所用的計(jì)算機(jī)系統(tǒng)。有的系統(tǒng)移入0,有的系統(tǒng)移入1。移入0的稱為“邏輯右移”,即簡單右移;移入1的稱為“算術(shù)右移”。

例:

a的值是八進(jìn)制數(shù)113755:

a:1001011111101101(用二進(jìn)制形式表示)a>>1:0100101111110110(邏輯右移時(shí))a>>1:1100101111110110(算術(shù)右移時(shí))

在有些系統(tǒng)中,a>>1得八進(jìn)制數(shù)045766,而在另一些系統(tǒng)上可能得到的是0145766。7位運(yùn)算賦值運(yùn)算符

位運(yùn)算符與賦值運(yùn)算符可以組成復(fù)合賦值運(yùn)算符。例如:&=,|=,>>=,<<=,∧=例:a&=b相當(dāng)于a=a&ba<<=2相當(dāng)于a=a<<2練習(xí):設(shè)整型變量a=25(即二進(jìn)制的00011001),b=7(即二進(jìn)制的00000111),計(jì)算下列各式的值(用十進(jìn)制

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論