C程序設(shè)計(jì)教案(第9章第1次)_第1頁
C程序設(shè)計(jì)教案(第9章第1次)_第2頁
C程序設(shè)計(jì)教案(第9章第1次)_第3頁
C程序設(shè)計(jì)教案(第9章第1次)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

PAGEPAGE4PAGE4周次:第周課次:第一課授課時(shí)間:年月日章節(jié)內(nèi)容:第9章位運(yùn)算教學(xué)目標(biāo):通過本章的學(xué)習(xí),要求能理解二進(jìn)制位運(yùn)算操作和位段結(jié)構(gòu),能熟練使用位運(yùn)算符進(jìn)行程序設(shè)計(jì)的方法,學(xué)習(xí)位操作能夠?yàn)橛布脚_(tái)的程序設(shè)計(jì)奠定基礎(chǔ)。為后續(xù)課程的學(xué)習(xí)起到鋪墊作用。教學(xué)重點(diǎn):掌握位邏輯運(yùn)算;掌握移位運(yùn)算;掌握復(fù)合賦值位運(yùn)算。教學(xué)難點(diǎn):掌握不等長(zhǎng)數(shù)據(jù)的位運(yùn)算。理解位段的結(jié)構(gòu)、存儲(chǔ)及使用教學(xué)方法和授課手段多媒體教室,電子課件。教學(xué)過程:預(yù)備(復(fù)習(xí)):結(jié)構(gòu)體、共用體、枚舉類型。(5分鐘)課前提問(5分鐘)課程引入:介紹二進(jìn)制運(yùn)算的基本知識(shí),原碼,反碼,補(bǔ)碼。(10分鐘)課程新授:(60分鐘)9.1位運(yùn)算的C程序?qū)嵗贿\(yùn)算引例【例9.1】一個(gè)簡(jiǎn)單的位運(yùn)算C程序/* 源文件名:Li9_1.c 功能:從鍵盤輸入兩個(gè)整數(shù)a和b,分別對(duì)其進(jìn)行位運(yùn)算。*/#include<stdio.h>voidmain(){ inta,b; inte,f,g,h,i; puts("請(qǐng)輸入整數(shù)a和b:"); /*打印輸出一串字符串*/ scanf("%d%d",&a,&b); /*假如這里輸入的值為a=2,b=3*//*那么轉(zhuǎn)化為二進(jìn)制位有a=(00000010)2,b=(00000011)2,進(jìn)行如下運(yùn)算*/ e=a|b; /*a與b進(jìn)行或運(yùn)算,結(jié)果存入到變量e中*/ f=a&b; /*a與b進(jìn)行與運(yùn)算,結(jié)果存入到變量f中*/ g=a^b; /*a與b進(jìn)行異或運(yùn)算,結(jié)果存入到變量g中*/ h=~a; /*對(duì)a進(jìn)行取反運(yùn)算,結(jié)果存入到變量h中*/ i=b<<2; /*對(duì)b進(jìn)行左移2位運(yùn)算,結(jié)果存入到變量i中*/ printf("e=%d\n",e); printf("f=%d\n",f); printf("g=%d\n",g); printf("h=%d\n",h); printf("i=%d\n",i);}9.2二進(jìn)制位運(yùn)算9.2.位邏輯運(yùn)算用來對(duì)某一個(gè)或某一對(duì)二進(jìn)制位進(jìn)行操作,其運(yùn)算符有以下幾個(gè):~表示按位取反&表示按位與∣表示按位或^表示按位異或除了~是一元運(yùn)算符外,&、∣、^都是二元運(yùn)算符。位邏輯運(yùn)算的運(yùn)算對(duì)象是整數(shù)。位邏輯運(yùn)算規(guī)則與邏輯運(yùn)算(&&∣、?。┮粯樱部捎谜嬷当肀硎?。設(shè)a、b分別表示一個(gè)二進(jìn)制位,則按位邏輯運(yùn)算的真值表可表示成如表9-1所示的形式。1.按位與運(yùn)算按位與邏輯運(yùn)算的運(yùn)算規(guī)則是:只有對(duì)應(yīng)的位均為1時(shí),與運(yùn)算的結(jié)果才為1,其他的情況均為0。即:0&0=00&1=11&0=01&1=12.按位或運(yùn)算按位或運(yùn)算的運(yùn)算規(guī)則是:只有按位或操作的對(duì)應(yīng)位均為零時(shí),結(jié)果才為零,其他情況按位或的結(jié)果均為1。即,0|0=00|1=11|0=11|1=13.按位異或運(yùn)算按位異或的運(yùn)算規(guī)則是:參與按位異或運(yùn)算的兩個(gè)二進(jìn)制位如果相同,則結(jié)果為0,如果不同則結(jié)果為1。即,0^0=00^1=11^0=11^1=04.按位取反運(yùn)算按位取反運(yùn)算的運(yùn)算規(guī)則是:0的按位取反結(jié)果為1,1的按位取反結(jié)果為0。即,~0=1~1=09.2.2移位運(yùn)算移位運(yùn)算實(shí)現(xiàn)二進(jìn)制位的順序向左或向右移位。1.左移位運(yùn)算左移位運(yùn)算符是<<,其語法格式為:a<<n其中,a是操作數(shù),可以是一個(gè)char型或整型的變量或表達(dá)式;n是待移位的位數(shù),必須是正整數(shù)。功能是將a中所有的二進(jìn)制位數(shù)向左移動(dòng)n位。左移位的運(yùn)算規(guī)則是:在移位過程中,各個(gè)二進(jìn)位順序向左移動(dòng),右端空出的位補(bǔ)0,移出左端之外的位則被舍棄。例如,a=10,其二進(jìn)制的存儲(chǔ)形式為00001010,則a<<2表示將a的各個(gè)二進(jìn)制位順序左移2位:00101000,即十進(jìn)制的40。2.右移位運(yùn)算由左移位的規(guī)則可以看出,對(duì)于無符號(hào)數(shù)而言,左移位相當(dāng)于乘2運(yùn)算,左移n位相當(dāng)于乘2的n次方。右移位運(yùn)算符是>>,其語法格式為:a>>n其中,a是操作數(shù),可以是一個(gè)char型或整型的變量或表達(dá)式;n是待移位的位數(shù),必須是正整數(shù)。功能是將a中所有的二進(jìn)制位數(shù)向右移動(dòng)n位。右移位的運(yùn)算規(guī)則是:在移位過程中,各個(gè)二進(jìn)位順序向右移動(dòng),左端空出的位補(bǔ)0還是補(bǔ)1取決于被移位的數(shù)是有符號(hào)數(shù)還是無符號(hào)數(shù),具體為:⑴對(duì)于無符號(hào)數(shù)進(jìn)行右移時(shí),左端空出的為一律補(bǔ)0。⑵對(duì)于用補(bǔ)碼表示的有符號(hào)數(shù)進(jìn)行右移時(shí),如果采用邏輯右移,則不管是正數(shù)還是負(fù)數(shù),左端空位一律補(bǔ)0;如果采用算術(shù)右移,則正數(shù)右移,左端的空位全部補(bǔ)0;負(fù)數(shù)右移,左端的空位全部補(bǔ)1(即符號(hào)位)。TurboC采用的是算術(shù)右移。9.2.3復(fù)合賦值位運(yùn)算符位運(yùn)算符可以和賦值運(yùn)算符構(gòu)成復(fù)合賦值位運(yùn)算符。復(fù)合賦值位運(yùn)算符的形式有:&=、|=、^=、~=、<<=、>>=。9.2.4不同長(zhǎng)度的數(shù)據(jù)進(jìn)行位運(yùn)算當(dāng)參加位運(yùn)算的兩個(gè)操作數(shù)的數(shù)據(jù)長(zhǎng)度不等時(shí),例如:一個(gè)int型的數(shù)據(jù),另一個(gè)long型的數(shù)據(jù),則兩個(gè)數(shù)參加運(yùn)算時(shí),系統(tǒng)自動(dòng)按右對(duì)齊。對(duì)于無符號(hào)數(shù),系統(tǒng)在做對(duì)齊處理時(shí),左端一律補(bǔ)0。對(duì)于有符號(hào)數(shù)來說,整數(shù)在做對(duì)齊處理時(shí),左端補(bǔ)0;負(fù)數(shù)在做對(duì)齊處理時(shí),左端補(bǔ)1。9.3位段位段是由一個(gè)或幾個(gè)二進(jìn)制位組成的獨(dú)立數(shù)據(jù)項(xiàng)。如果一個(gè)結(jié)構(gòu)只含有整型的成員及位段成員,這種結(jié)構(gòu)被稱為位段結(jié)構(gòu)。因此,位段結(jié)構(gòu)只是結(jié)構(gòu)的一個(gè)特例,有關(guān)結(jié)構(gòu)的定義、引用、賦值、在函數(shù)間的傳遞等,都可以引申到位段結(jié)構(gòu)中來;位段結(jié)構(gòu)的特殊性就是其各個(gè)成員只能是整型的。因此,本節(jié)僅就位段成員方面的問題作一些說明。9.3.1位段結(jié)構(gòu)類型及位段結(jié)構(gòu)變量的定義位段結(jié)構(gòu)類型及位段結(jié)構(gòu)變量的定義格式為:struct結(jié)構(gòu)標(biāo)識(shí)符{數(shù)據(jù)類型位段名1:位數(shù);數(shù)據(jù)類型位段名2:位數(shù);……數(shù)據(jù)類型位段名n:位數(shù);}[位段結(jié)構(gòu)變量表];其中,各位段的數(shù)據(jù)類型必須是int、signed或unsigned;位數(shù)為1的位段只能用unsigned;每個(gè)位段名后緊跟一個(gè)冒號(hào),冒號(hào)后面是該位段的位數(shù)。對(duì)位段結(jié)構(gòu)的定義應(yīng)注意以下幾點(diǎn):⑴各個(gè)位段必須依次單獨(dú)定義,不能把幾個(gè)位段組織成數(shù)組。⑵每個(gè)位段的長(zhǎng)度可以超過一個(gè)字節(jié),但不能超過計(jì)算機(jī)的字長(zhǎng)(在TurboC2.0中為16位),所有位段的總長(zhǎng)度則可以超過一個(gè)計(jì)算機(jī)字長(zhǎng),超過的部分會(huì)占用下一個(gè)存儲(chǔ)單元。由于不允許一個(gè)位段跨越兩個(gè)字長(zhǎng)的存儲(chǔ)單元,可定義一個(gè)長(zhǎng)度為0的位段,以保證下一個(gè)位段從新的存儲(chǔ)單元開始。⑶如果位段結(jié)構(gòu)的總長(zhǎng)度不足n個(gè)計(jì)算機(jī)字長(zhǎng),余下的位可以定義一個(gè)不使用的位段或無名位段。⑷位段結(jié)構(gòu)變量可以按位段初始化,初值表中,不需要初始化的位段用逗號(hào)跳過。⑸位段結(jié)構(gòu)中也可以包含整型的變量或數(shù)組成員,但變量或數(shù)組名后不能跟冒號(hào)和位數(shù),系統(tǒng)自動(dòng)將他們從新的存儲(chǔ)單元開始存放。⑹結(jié)構(gòu)中可以包含位段成員。9.3.2位段結(jié)構(gòu)的存儲(chǔ)位段結(jié)構(gòu)中的所有成員按先后次序存放,但存儲(chǔ)單元中位段的空間分配方向則隨機(jī)而異。由于不同計(jì)算機(jī)的字長(zhǎng)不同,造成使用位段結(jié)構(gòu)的程序很難移植。下面以從左到右的空間分配方式,通過實(shí)例將位段結(jié)構(gòu)存儲(chǔ)分配中的幾個(gè)問題說明如下:⑴每個(gè)位段結(jié)構(gòu)變量有自己的起始地址,其中的每一個(gè)整型變量或數(shù)組成員也有各自的地址,但位段成員則沒有自己的地址,不能對(duì)位段成員進(jìn)行取地址運(yùn)算。⑵對(duì)于前面定義的位段結(jié)構(gòu)變量ch來說,由于變量i必須從新的字節(jié)開始存放,因此系統(tǒng)自動(dòng)在位段a3后面閑置5位。因此變量ch的存儲(chǔ)格式為:a1a2a3空閑i254516(二進(jìn)制位數(shù))課程小結(jié)(10分鐘)位操作是對(duì)字節(jié)或字節(jié)內(nèi)的二進(jìn)制位進(jìn)行測(cè)試、設(shè)置、或邏輯的運(yùn)算。位操作可以分為兩類:一類是邏輯位運(yùn)算,另一類是移位運(yùn)算。位邏輯運(yùn)算用來對(duì)某一個(gè)或某一對(duì)二進(jìn)制位進(jìn)行操作,其運(yùn)算符有以下幾個(gè):~表示按位取反&表示按位與∣表示按位或^表示按位異或移位運(yùn)算實(shí)現(xiàn)二進(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)論