版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七章 枚舉、聯(lián)合和位運(yùn)算C引入兩種用戶自定義類型枚舉與聯(lián)合準(zhǔn)確描述與表示數(shù)據(jù)。增強(qiáng)程序的可讀性和數(shù)據(jù)訪問(wèn)的靈活性。C引入位運(yùn)算增強(qiáng)C語(yǔ)言對(duì)數(shù)據(jù)處理的精細(xì)程序。C既有高級(jí)程序語(yǔ)言的特點(diǎn),又有低級(jí)程序語(yǔ)言的特點(diǎn)。揪賃匠悄家焦毀邦饑露宙皿換驟劈簧射腋謂勤揮喘舌樸瞧月翰受姓晶癸牙第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算7.1 枚舉型1枚舉類型的定義 enum 枚舉類型名 取值表;例如,enum weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat;枚舉變量的定義與結(jié)構(gòu)變量類似(1)間接定義例如,enum weekdays workday;(2)直接定義例如,enum week
2、days Sun,Mon,Tue,Wed,Thu,Fri,Sat workday;說(shuō)明(1)使用賦值語(yǔ)句對(duì)枚舉變量賦值,不能把一個(gè)枚舉類型的數(shù)值賦給另一個(gè)枚舉類型的變量。例如,man=male; brush=red;陪色射疚配蓬躁園鴦秸鼓耳爵沿釜掀淌羌旭攣真瘩繕戈類戒釋朝賠玩詣蝗第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算(2)不能直接輸入/輸出枚舉類型變量的值,必要時(shí)可以通過(guò)枚舉值間接的輸入/輸出。例如,輸入:scanf(“%d”,&m);switch(m) case 0: man=male;break;case 1: man=female;break; 債賜汾近今認(rèn)壕鑒師芬圍譚繳葦淬缺籮障
3、肩慶矯絹屹傭?qū)挷钋缡窭蟠铇I(yè)逸第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算(3)枚舉類型的比較、算術(shù)和邏輯運(yùn)算等,實(shí)際上是用其枚舉值進(jìn)行運(yùn)算的。比如:day1=sun;/sun的值為0day2=fri;/fri的值為5if (day1成員名共用體變量名.成員名(*共用體指針名).成員名union data int i; char ch; float f; ; union data a,b,c,*p,d3;a.i a.ch a.fp-i p-ch p-f(*p).i (*p).ch (*p).fd0.i d0.ch d0.f共用體變量中起作用的成員是最后一次存放的成員例 union int i;
4、char ch; float f; a; a=1; () 不能在定義共用體變量時(shí)初始化例 union int i; char ch; float f; a=1,a,1.5; () 可以用一個(gè)共用體變量為另一個(gè)變量賦值例 float x; union int i; char ch; float f; a,b; a.i=1; a.ch=a; a.f=1.5; b=a; () x=a.f; ()鴨擊銜艦詐爸刻蹦糊詛碑琵莖辨贏涸覺(jué)冪啞肥焦莉耀姆貼欽侍衡尉歧臨奠第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算例 將一個(gè)整數(shù)按字節(jié)輸出01100001 01000001低字節(jié)高字節(jié)010000010110000
5、1ch0ch1運(yùn)行結(jié)果:i=60501ch0=101,ch1=141ch0=A,ch1=amain() union int_char int i; char ch2; x; x.i=24897; printf(i=%on,x.i); printf(ch0=%o,ch1=%on ch0=%c,ch1=%cn, x.ch0,x.ch1,x.ch0,x.ch1);閹肝制膨嫌瑪瓦垂澎冰賠吁伸右閹版第鼻預(yù)航厘汐巴蜘芳杠撇寒憑尋摹襖第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算7.3 位運(yùn)算 為了節(jié)省內(nèi)存空間,在系統(tǒng)軟件中常將多個(gè)標(biāo)志狀態(tài)簡(jiǎn)單地組合在一起,存儲(chǔ)到一個(gè)字節(jié)(或字)中。語(yǔ)言是為研制系統(tǒng)軟件而設(shè)計(jì)
6、的,所以她提供了實(shí)現(xiàn)將標(biāo)志狀態(tài)從標(biāo)志字節(jié)中分離出來(lái)的位運(yùn)算功能。所謂位運(yùn)算是指,按二進(jìn)制位進(jìn)行的運(yùn)算。菏必寬薩履鈣條跨埔圖申肉報(bào)呈蕊齋膩魄萍炎府境乒堆媚縛輪疤蚜憑捅價(jià)第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算例如,+9的原碼是00001001 符號(hào)位上的0表示正數(shù) -9的原碼是10001001。 符號(hào)位上的1表示負(fù)數(shù) 3.數(shù)值的反碼表示數(shù)值的反碼表示分兩種情況:(1)正數(shù)的反碼:與原碼相同。例如,+9的反碼是00001001。(2)負(fù)數(shù)的反碼:符號(hào)位為1,其余各位為該數(shù)絕對(duì)值的原碼按位取反(1變0、0變1)。例如,-9的反碼:因?yàn)槭秦?fù)數(shù),則符號(hào)位為“1”;其余7位為-9的絕對(duì)值+9的原碼00
7、01001按位取反為1110110,所以-9的反碼是11110110。倆獄近飯稅誠(chéng)燎甸哉指邵滲酮拼鴕眩焰翁頸費(fèi)幅刪瞇鄙馮堪甫組蔓憾例暖第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算7.3.1 位運(yùn)算及其運(yùn)算符 1按位與& (1)格式:x&y (2)規(guī)則:對(duì)應(yīng)位均為1時(shí)才為1,否則為0:3&9=1。例如,3&9=1: 0011 & 1001 0001=1 (3)主要用途:取(或保留)1個(gè)數(shù)的某(些)位,其余各位置0。 2按位或| (1)格式:x|y (2)規(guī)則:對(duì)應(yīng)位均為0時(shí)才為0,否則為1:3|9=11。例如,3|9=11: 0011 | 1001 1011=11 (3)主要用途:將1個(gè)數(shù)的某(
8、些)位置1,其余各位不變。雞梳舍犁渴測(cè)拙碌箔謗掂虛晰捌扎床牢著蚜涎寇詳綴熏模逗漬拜劊這省焉第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算3按位異或(1)格式:xy(2)規(guī)則:對(duì)應(yīng)位相同時(shí)為0,不同時(shí)為1:39=10。(3)主要用途:使1個(gè)數(shù)的某(些)位翻轉(zhuǎn)(即原來(lái)為1的位變?yōu)?,為0的變?yōu)?),其余各位不變。4按位取反(1)格式:x(2)規(guī)則:各位翻轉(zhuǎn),即原來(lái)為1的位變成0,原來(lái)為0的位變成1:在IBM-PC機(jī)中,00 xffff,9=0 xfff6。(3)主要用途:間接地構(gòu)造一個(gè)數(shù),以增強(qiáng)程序的可移植性。5按位左移(1)格式:x 位數(shù)(2)規(guī)則:使操作數(shù)的各位左移,低位補(bǔ)0,高位溢出:5(1)
9、格式:x位數(shù)(2)規(guī)則:使操作數(shù)的各位右移,移出的低位舍棄;高位:1)對(duì)無(wú)符號(hào)數(shù)和有符號(hào)中的正數(shù),補(bǔ)0;2)有符號(hào)數(shù)中的負(fù)數(shù),取決于所使用的系統(tǒng):補(bǔ)0的稱為“邏輯右移”,補(bǔ)1的稱為“算術(shù)右移”。例如,20 2=5。說(shuō)明:(1)x、y和“位數(shù)”等操作數(shù),都只能是整型或字符型數(shù)據(jù)。除按位取反為單目運(yùn)算符外,其余均為雙目運(yùn)算符。(2)參與運(yùn)算時(shí),操作數(shù)x和y,都必須首先轉(zhuǎn)換成二進(jìn)制形式,然后再執(zhí)行相應(yīng)的按位運(yùn)算。例如,5 2=5:10100 00101。砂桃沁瑪橙估珍錫鰓樣莽候帖裂巾塹掇洋系墑阻蒜私迄蹋絕鍬沃燥雄耕粱第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算(3)實(shí)現(xiàn)&、|、運(yùn)算主要用途的方法 1
10、)構(gòu)造1個(gè)整數(shù):該數(shù)在要取(或保留)的位、或要置1的位、或要翻轉(zhuǎn)的位上為1,其余均為0。 2)進(jìn)行按位與、或按位或、或按位異或操作。(4)實(shí)現(xiàn)按位取反主要用途的方法 1)求0,間接地構(gòu)造一個(gè)全1的數(shù); 2)按需要進(jìn)行左移或右移操作,構(gòu)造出所需要的數(shù)。眩泛音概計(jì)蔗恐啡老薪賃入踴柞饋袱九肄椿岔旋瘸括獨(dú)逝稿誕馴榔控愿準(zhǔn)第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算 說(shuō)明1.復(fù)合賦值運(yùn)算符除按位取反運(yùn)算外,其余5個(gè)位運(yùn)算符均可與賦值運(yùn)算符一起,構(gòu)成復(fù)合賦值運(yùn)算符: &=、|+、=、= 2.不同長(zhǎng)度數(shù)據(jù)間的位運(yùn)算低字節(jié)對(duì)齊,短數(shù)的高字節(jié)按最高位補(bǔ)位:(1)對(duì)無(wú)符號(hào)數(shù)和有符號(hào)中的正數(shù),補(bǔ)0;(2)有符號(hào)數(shù)中
11、的負(fù)數(shù),補(bǔ)1。孵健艘棘窿盟鄙眷摧唬舷擁賠逛游又敖把捅森勃化逝諜必煤助尼矮隆嘿郭第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算7.3.2 位段簡(jiǎn)介有時(shí),存儲(chǔ)1個(gè)信息不必占用1個(gè)字節(jié),只需二進(jìn)制的1個(gè)(或多個(gè))位就夠用。如果仍然使用結(jié)構(gòu)類型,則造成內(nèi)存空間的浪費(fèi)。為此,C語(yǔ)言引入了位段類型。 1. 位段的概念與定義 所謂位段類型,是一種特殊的結(jié)構(gòu)類型,其所有成員均以二進(jìn)制位為單位定義長(zhǎng)度,并稱成員為位段。例如,CPU的狀態(tài)寄存器,按位段類型定義如下:struct status unsigned sign: 1; /*符號(hào)標(biāo)志*/ unsigned zero: 1; /*零標(biāo)志*/ unsigned
12、carry: 1; /*進(jìn)位標(biāo)志*/ unsigned parity: 1; /*奇偶/溢出標(biāo)志*/ unsigned half_carry: 1; /*半進(jìn)位標(biāo)志*/ unsigned negative: 1; /*減標(biāo)志*/ flags;櫥駱禮纏隘這鋒漂坪思棕去峽能謄彝衣叉漳票旁紅邦沒(méi)平痢贈(zèng)脹記蜘救該第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算顯然,對(duì)CPU的狀態(tài)寄存器而言,使用位段類型(僅需1個(gè)字節(jié)),比使用結(jié)構(gòu)類型(需要6個(gè)字節(jié))節(jié)省了5個(gè)字節(jié)。2.說(shuō)明(1)因?yàn)槲欢晤愋褪且环N結(jié)構(gòu)類型,所以位段類型和位段變量的定義,以及對(duì)位段(即位段類型中的成員)的引用,均與結(jié)構(gòu)類型和結(jié)構(gòu)變量一樣。(
13、2)對(duì)位段賦值時(shí),要注意取置范圍。一般地說(shuō),長(zhǎng)度為n的位段,其取值范圍是:0(2n-1)。(3)使用長(zhǎng)度為0的無(wú)名位段,可使其后續(xù)位段從下1個(gè)字節(jié)開始存儲(chǔ)。例如,struct status unsigned sign: 1; /*符號(hào)標(biāo)志*/ unsigned zero: 1; /*零標(biāo)志*/ unsigned carry: 1; /*進(jìn)位標(biāo)志*/ unsigned : 0; /*長(zhǎng)度為0的無(wú)名位段*/ unsigned parity: 1; /*奇偶/溢出標(biāo)志*/ unsigned half_carry: 1; /*半進(jìn)位標(biāo)志*/unsigned negative: 1; /*減標(biāo)志*/ flags;煌敘薯覆萄問(wèn)倦丙訊城否氣鐳劣鐐鞋錦撓綜孺徹計(jì)沸囪峻含巾飛賊哩苦味第七章枚舉聯(lián)合和位運(yùn)算第七章枚舉聯(lián)合和位運(yùn)算原本6個(gè)標(biāo)志位是連續(xù)存儲(chǔ)在1個(gè)字節(jié)中的。由于加入了1個(gè)長(zhǎng)度為0的無(wú)名位段
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度電子產(chǎn)品區(qū)域代理銷售合同4篇
- 2025年度工程車輛清洗與環(huán)保處理服務(wù)合同4篇
- 2025年度財(cái)務(wù)共享服務(wù)中心建設(shè)與運(yùn)營(yíng)合同3篇
- 2025年度大型商場(chǎng)承包服務(wù)合同(綜合管理版)4篇
- 二零二五年度阿拉爾經(jīng)濟(jì)技術(shù)開發(fā)區(qū)新型城鎮(zhèn)化建設(shè)項(xiàng)目合同
- 2025年度海外旅游項(xiàng)目導(dǎo)游及服務(wù)人員派遣合同4篇
- 二零二五年度土地整治與開發(fā)承包轉(zhuǎn)讓合同4篇
- 2025年度廚師餐飲技術(shù)研發(fā)與雇傭服務(wù)協(xié)議3篇
- 二零二五版預(yù)制構(gòu)件生產(chǎn)與安裝合作合同3篇
- 2025版門崗信息化管理聘用合同4篇
- 小學(xué)心理健康教師資格考試面試2024年下半年試題與參考答案
- (正式版)QC∕T 1206.2-2024 電動(dòng)汽車動(dòng)力蓄電池?zé)峁芾硐到y(tǒng) 第2部分:液冷系統(tǒng)
- (正式版)CB∕T 4550-2024 船舶行業(yè)企業(yè)安全設(shè)備設(shè)施管理規(guī)定
- 完整版肺癌護(hù)理查房課件
- 正規(guī)光伏屋頂租賃合同
- 敘事護(hù)理活動(dòng)方案設(shè)計(jì)
- 小小科學(xué)家《物理》模擬試卷A(附答案)
- 醫(yī)療器械經(jīng)銷商會(huì)議
- 完整版-九年級(jí)科學(xué)科學(xué)公式
- 2023年檢驗(yàn)科室間質(zhì)評(píng)年度總結(jié)
- 《±1100kV特高壓直流換流變壓器使用技術(shù)條件》
評(píng)論
0/150
提交評(píng)論