第15章底層程序設(shè)計(jì)_第1頁(yè)
第15章底層程序設(shè)計(jì)_第2頁(yè)
第15章底層程序設(shè)計(jì)_第3頁(yè)
第15章底層程序設(shè)計(jì)_第4頁(yè)
第15章底層程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、大家好!C語(yǔ)言提供了6個(gè)位運(yùn)算符,這些運(yùn)算符可以用于在整數(shù)和字符上進(jìn)行按位運(yùn)算。15.1 15.1 位運(yùn)算符位運(yùn)算符表15.1 位邏輯運(yùn)算符 運(yùn)算符 含義 按位求反 & 按位與 | 按位或 按位異或1. 二進(jìn)制反碼或按位取反: 是一個(gè)單目運(yùn)算符,它用來(lái)對(duì)一個(gè)二進(jìn)制數(shù)按位取反,即將0變?yōu)?,將1變?yōu)?。例如,對(duì)十進(jìn)制數(shù)28求反,需要先求出其對(duì)應(yīng)的二進(jìn)制數(shù),再對(duì)該二進(jìn)制數(shù)求反。28對(duì)應(yīng)的二進(jìn)制數(shù)為:00011100,對(duì)其求反后結(jié)果如圖15.1所示。圖15.1 對(duì)28求反2. 按位與:&二進(jìn)制運(yùn)算符&通過(guò)對(duì)其兩個(gè)操作數(shù)逐位進(jìn)行比較來(lái)產(chǎn)生一個(gè)新值。對(duì)于每個(gè)二進(jìn)制位,只有兩個(gè)操作

2、數(shù)的對(duì)應(yīng)位都為1時(shí)結(jié)果才為1,否則為0。如果用真、假來(lái)描述,那就是只有當(dāng)兩個(gè)位操作數(shù)都為真時(shí)結(jié)果才為真,否則結(jié)果為假。例如,求5&9應(yīng)該先將它們各自轉(zhuǎn)換為二進(jìn)制數(shù),然后再進(jìn)行按位與,如圖15.2所示。 圖15.2 5&93. 按位或:|二進(jìn)制運(yùn)算符 | 通過(guò)對(duì)兩個(gè)操作數(shù)逐位進(jìn)行比較來(lái)產(chǎn)生一個(gè)新值。對(duì)于每個(gè)二進(jìn)制位,如果任意一個(gè)操作數(shù)中對(duì)應(yīng)的位為1,那么結(jié)果位就為1。如果用真、假來(lái)描述,那就是如果任意一個(gè)操作數(shù)為真或者兩個(gè)都為真,那么結(jié)果就為真,否則為假。例如,求5|9應(yīng)該先將它們各自轉(zhuǎn)換為二進(jìn)制數(shù),然后再進(jìn)行按位或,如圖15.3所示。 圖15.3 5|91. 清零將二進(jìn)制數(shù)00

3、110101清零:2. 取指定位取整數(shù)x的低4位,x=00110101:3. 保留特定位將整數(shù)x的第3位、第4位保留下來(lái),x=00110101:4. 打開位打開整數(shù)x的第1位,x=00110101,即將第1位設(shè)置為1,并保留其它所有位不變:5. 關(guān)閉位關(guān)閉整數(shù)x的第1位,x=00110101,即將第1位設(shè)置為0,并保留其它所有位不變:6. 轉(zhuǎn)置位轉(zhuǎn)置整數(shù)x的第1位和第2位,x=00110101,即打開第1位,關(guān)閉第2位:1. 左移運(yùn)算符:左移運(yùn)算符 將其左側(cè)操作數(shù)中的每位都向左移動(dòng),移動(dòng)的位數(shù)由其右側(cè)的操作數(shù)指定??粘龅奈皇褂?來(lái)填充,并且將移出左側(cè)操作數(shù)最高位的那些位丟棄掉。下面是使用左移運(yùn)

4、算符的例子: (10001010) l右移位運(yùn)算符將其左側(cè)操作數(shù)中的每位都向右移動(dòng),移動(dòng)的位數(shù)由其右側(cè)的操作數(shù)指定。將移出左側(cè)操作數(shù)最低位的那些位丟棄掉。l對(duì)于無(wú)符號(hào)整數(shù)來(lái)說(shuō),使用0填充左端空出的位。l對(duì)于有符號(hào)整數(shù)來(lái)說(shuō),其結(jié)果依賴于具體的機(jī)器??粘龅奈豢赡苡?填充,也可能使用符號(hào)位(最左端的位)的值來(lái)填充。對(duì)于帶符號(hào)整數(shù),有如下結(jié)果:(10001010) 2 /*最高位為符號(hào)位*/(00100010) /*對(duì)某些系統(tǒng),使用0 來(lái)填充高位*/(11100010) /*對(duì)某些系統(tǒng),使用符 號(hào)位的值來(lái)填充高位*/對(duì)于無(wú)符號(hào)整數(shù),有如下結(jié)果:(10001010) 2 /*無(wú)符號(hào)整數(shù)*/(001000

5、10) /*右移后的結(jié)果 */l移位運(yùn)算符能夠提供快捷、高效的對(duì)于2的冪的乘法和除法。l左移1位相當(dāng)于乘以2,右移1位相當(dāng)于除以2。l假設(shè)number是一個(gè)整型變量,則有:number n 如果number非負(fù),則用number除以2的n次冪位字段是一個(gè)signed int或unsigned int中一組相鄰的位。位字段由一個(gè)結(jié)構(gòu)體來(lái)聲明創(chuàng)建,該結(jié)構(gòu)體聲明為每個(gè)字段提供字段名,并指定字段的寬度。例如,下面的聲明建立了4個(gè)1位的字段:struct unsigned int aaa: 1; unsigned int bbb: 1; unsigned int ccc: 1; unsigned int ddd: 1; abcd;在結(jié)構(gòu)體變量abcd中包含了4個(gè)1位的字段。可以使用結(jié)構(gòu)體的成員運(yùn)算符將各個(gè)成員值賦給單獨(dú)的字段。abcd.aaa = 0;abcd.bbb = 1;因?yàn)閍bcd中的每個(gè)字段都只有1位,因此每個(gè)字段只能被賦值為1或者0。結(jié)構(gòu)體變量abcd被存儲(chǔ)在一個(gè)int類型大小的存儲(chǔ)單元中,但是僅有其中的4位被變量使用。l本章介紹了C語(yǔ)言中常用的位運(yùn)算符,包括按位求反、按位與、按位或、按位異或以及左移和右移運(yùn)算符。l位邏輯運(yùn)算符有一些特殊的用途,例如清零、取指定

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論