




已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第10章 位 運(yùn) 算,位運(yùn)算是指對(duì)二進(jìn)制位進(jìn)行的運(yùn)算。每個(gè)二進(jìn)制位中只能存放0或1。因此,位運(yùn)算就是對(duì)二進(jìn)制數(shù)的運(yùn)算。通常,將一個(gè)數(shù)據(jù)用二進(jìn)制數(shù)表示后,最右邊的二進(jìn)制位稱為最低位(第0位),最左邊的二進(jìn)制位為最高位。,圖10.1 微機(jī)中整數(shù)的二進(jìn)制位表示,10.1 二進(jìn)制位運(yùn)算 10.2 位 段 10.3 程序舉例,10.1 二進(jìn)制位運(yùn)算,在C語言中共提供了6種位運(yùn)算符,如表10.1所示。 表10.1,返回目錄,(1)在這6種位運(yùn)算符中,其中按位取反是單目運(yùn)算符,只有一個(gè)運(yùn)算對(duì)象,其他均為雙目運(yùn)算符,有兩個(gè)運(yùn)算對(duì)象。 (2)位運(yùn)算的運(yùn)算對(duì)象只能是整型(包括int,short,long和unsigned)或字符型數(shù)據(jù),而不能是實(shí)型數(shù)據(jù)。 (3)各位運(yùn)算符的優(yōu)先級(jí)比較分散,與其他運(yùn)算符一起,其優(yōu)先級(jí)從高到低如下: 邏輯非(!)按位取反()算術(shù)運(yùn)算符左移運(yùn)算符()關(guān)系運(yùn)算符按位與運(yùn)算符(&),按位異或運(yùn)算符(),按位或運(yùn)算符(|)&與| 賦值運(yùn)算符,1“按位與”運(yùn)算符(&) “按位與”的運(yùn)算符為“&”。其運(yùn)算規(guī)則是:若兩個(gè)運(yùn)算對(duì)象的對(duì)應(yīng)二進(jìn)制位均是1,則結(jié)果的對(duì)應(yīng)位是1,否則為0。 利用“按位與”運(yùn)算可以實(shí)現(xiàn)以下功能: (1)取出數(shù)據(jù)中指定的位 (2)將數(shù)據(jù)中的指定位清零,2“按位或”運(yùn)算符(|) “按位或”的運(yùn)算符為“|”。其運(yùn)算規(guī)則是:若兩個(gè)運(yùn)算對(duì)象的對(duì)應(yīng)二進(jìn)制位中有一個(gè)是1,則結(jié)果的對(duì)應(yīng)位是1,否則為0。,例10.2 下列C程序的功能是將整型數(shù)組中所有元素轉(zhuǎn)換為不小于它的最小奇數(shù),并顯示輸出。 #include “stdio.h“ main() int k,a1023,14,24,31,46,55,33,68,27,40; for (k0;k10;k) printf(“%5d“,ak); printf(“n“); for (k0;k10;k) akak|0x01; for (k0;k10;k) printf(“%5d“,ak); printf(“n“); ,3“按位異或”運(yùn)算符() “按位異或”的運(yùn)算符為“” 。其運(yùn)算規(guī)則是:若兩個(gè)運(yùn)算對(duì)象的對(duì)應(yīng)二進(jìn)制位不相等,則結(jié)果的對(duì)應(yīng)位是1,否則為0。 “按位異或”運(yùn)算具有以下幾個(gè)性質(zhì): (1)使數(shù)據(jù)中的某些位取反,即將0變?yōu)?,1變?yōu)?。 (2)同一個(gè)數(shù)據(jù)進(jìn)行異或運(yùn)算后,其結(jié)果為0。利用異或運(yùn)算的這個(gè)性質(zhì),可以將變量清零。 (3)可以實(shí)現(xiàn)交換兩個(gè)變量的值:,4“按位取反”運(yùn)算符() “按位取反”的運(yùn)算符為“”。其運(yùn)算規(guī)則是:將運(yùn)算對(duì)象中的各二進(jìn)制位值取反,即將0變?yōu)?,1變?yōu)?。,5“左移”運(yùn)算符() “左移”運(yùn)算符為“”。其運(yùn)算規(guī)則是:將運(yùn)算對(duì)象中的每個(gè)二進(jìn)制位向左移動(dòng)若干位,從左邊移出去的高位部分被丟棄,右邊空出的低位部分補(bǔ)0。,6“右移”運(yùn)算符() “右移”運(yùn)算符為“”。其運(yùn)算規(guī)則是:將運(yùn)算對(duì)象中的每個(gè)二進(jìn)制位向右移動(dòng)若干位,從右邊移出去的低位部分被丟棄。但左邊空出的高位部分是補(bǔ)0還是補(bǔ)1,要視下列具體情況而定: 若右移對(duì)象為無符號(hào)整型數(shù),則右移后左邊空出的高位部分補(bǔ)0。 若右移對(duì)象為一般整型數(shù)或字符型數(shù)據(jù),當(dāng)該數(shù)據(jù)的最高位為0(對(duì)于一般整型來說即為正數(shù)),則右移后左邊空出的高位部分補(bǔ)0。當(dāng)該數(shù)據(jù)的最高位為1(對(duì)于一般整型來說即為正數(shù)),則與使用的計(jì)算機(jī)系統(tǒng)有關(guān),有的計(jì)算機(jī)系統(tǒng)將右移后左邊空出的高位部分補(bǔ)1,稱為“算術(shù)右移”;有的計(jì)算機(jī)系統(tǒng)將右移后左邊空出的高位部分補(bǔ)0,稱為“邏輯右移”。,10.2 位 段 在C語言中,定義位段結(jié)構(gòu)類型的一般形式為 struct 位段結(jié)構(gòu)類型名 成員表 ;,返回目錄,在定義位段與使用位段時(shí),要注意以下幾個(gè)問題: (1)位段成員的類型必須是unsigned型。 (2)在位段結(jié)構(gòu)類型中,可以定義無名位段,這種無名位段具有位段之間的分隔作用。 (3)每個(gè)位段(成員)所占的二進(jìn)制位數(shù)一般不能超過一個(gè)字長(即一個(gè)存儲(chǔ)單元)。 (4)在位段結(jié)構(gòu)類型定義中,可以包含非位段成員。 (5)位段可以在一般的表達(dá)式中被引用,并被自動(dòng)轉(zhuǎn)換為相應(yīng)的整數(shù)。,10.3 程序舉例,例10.3 編寫一個(gè)C程序,其功能是:從鍵盤輸入一個(gè) 無符號(hào)整數(shù)m以及位移位數(shù)n,當(dāng)n0時(shí),將m循環(huán)右 移n位;當(dāng)n0時(shí),將m循環(huán)左移|n|位。,返回目錄,將一個(gè)無符號(hào)整數(shù)m循環(huán)移n位的方法如下: 首先用sizeof函數(shù)確定一個(gè)無符號(hào)整數(shù)所占的二進(jìn)制位數(shù)k。 如果是循環(huán)右移,則先將m右移n位(即將原數(shù)的高kn位移到低位),再將m左移kn位(即將原數(shù)的低n位移到高位),然后將它們作按位或運(yùn)算(即將它們合并)。 如果是循環(huán)左移,則先將m左移n位(即將原數(shù)的低kn位移到高位),再將m右移kn位(即將原數(shù)的高n位移到低位),然后將它們作按位或運(yùn)算(即將它們合并)。,其C程序如下: #include “stdio.h“ main() unsigned m; int n; printf(“input m:“); scanf(“%x“,&m); printf(“input n:“); scanf(“%d“,&n); if (n0) printf(“moveright%xn“,moveright(m,n); else printf(“moveleft%
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 國內(nèi)大循環(huán)戰(zhàn)略的實(shí)踐路徑
- 光伏電站光伏區(qū)技改項(xiàng)目實(shí)施方案(模板)
- 2024屆浙江省金麗衢十二校高三上學(xué)期第一次聯(lián)考物理卷 含解析
- 2025年開展《安全生產(chǎn)月》活動(dòng)實(shí)施方案 匯編3份
- 西南大學(xué)《學(xué)前兒童教育活動(dòng)設(shè)計(jì)與實(shí)施》2023-2024學(xué)年第二學(xué)期期末試卷
- 貴州銅仁數(shù)據(jù)職業(yè)學(xué)院《二外英語二》2023-2024學(xué)年第二學(xué)期期末試卷
- 常熟理工學(xué)院《秘書公關(guān)與禮儀》2023-2024學(xué)年第二學(xué)期期末試卷
- 太原學(xué)院《建筑環(huán)境攝影》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北理工學(xué)院《計(jì)算機(jī)與辦公自動(dòng)化》2023-2024學(xué)年第二學(xué)期期末試卷
- 泉州師范學(xué)院《塑料制品注塑模具設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 《北京喜訊到邊寨》教學(xué)教案設(shè)計(jì)
- 集團(tuán)公司專家?guī)旖ㄔO(shè)管理手冊(cè)
- BIM、智慧工地建設(shè)管理方案及措施
- 心理契約的概念、維度及特點(diǎn)
- 紅色喜慶頒獎(jiǎng)盛典PPT模板課件
- JIS G4305-2021 冷軋不銹鋼板材、薄板材和帶材
- 小型玉米脫粒機(jī)的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- (完整版)圍堰筑島圍堰施工專項(xiàng)方案
- 鋁母線設(shè)計(jì)裝配技術(shù)要求
- 扣件式鋼管腳手架檢查評(píng)分表
- 隧道反坡排水方案
評(píng)論
0/150
提交評(píng)論