



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGEPAGE4PAGE4周次:第周課次:第一課授課時間:年月日章節(jié)內(nèi)容:第9章位運算教學(xué)目標:通過本章的學(xué)習(xí),要求能理解二進制位運算操作和位段結(jié)構(gòu),能熟練使用位運算符進行程序設(shè)計的方法,學(xué)習(xí)位操作能夠為硬件平臺的程序設(shè)計奠定基礎(chǔ)。為后續(xù)課程的學(xué)習(xí)起到鋪墊作用。教學(xué)重點:掌握位邏輯運算;掌握移位運算;掌握復(fù)合賦值位運算。教學(xué)難點:掌握不等長數(shù)據(jù)的位運算。理解位段的結(jié)構(gòu)、存儲及使用教學(xué)方法和授課手段多媒體教室,電子課件。教學(xué)過程:預(yù)備(復(fù)習(xí)):結(jié)構(gòu)體、共用體、枚舉類型。(5分鐘)課前提問(5分鐘)課程引入:介紹二進制運算的基本知識,原碼,反碼,補碼。(10分鐘)課程新授:(60分鐘)9.1位運算的C程序?qū)嵗贿\算引例【例9.1】一個簡單的位運算C程序/* 源文件名:Li9_1.c 功能:從鍵盤輸入兩個整數(shù)a和b,分別對其進行位運算。*/#include<stdio.h>voidmain(){ inta,b; inte,f,g,h,i; puts("請輸入整數(shù)a和b:"); /*打印輸出一串字符串*/ scanf("%d%d",&a,&b); /*假如這里輸入的值為a=2,b=3*//*那么轉(zhuǎn)化為二進制位有a=(00000010)2,b=(00000011)2,進行如下運算*/ e=a|b; /*a與b進行或運算,結(jié)果存入到變量e中*/ f=a&b; /*a與b進行與運算,結(jié)果存入到變量f中*/ g=a^b; /*a與b進行異或運算,結(jié)果存入到變量g中*/ h=~a; /*對a進行取反運算,結(jié)果存入到變量h中*/ i=b<<2; /*對b進行左移2位運算,結(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二進制位運算9.2.位邏輯運算用來對某一個或某一對二進制位進行操作,其運算符有以下幾個:~表示按位取反&表示按位與∣表示按位或^表示按位異或除了~是一元運算符外,&、∣、^都是二元運算符。位邏輯運算的運算對象是整數(shù)。位邏輯運算規(guī)則與邏輯運算(&&∣、?。┮粯?,也可用真值表表示。設(shè)a、b分別表示一個二進制位,則按位邏輯運算的真值表可表示成如表9-1所示的形式。1.按位與運算按位與邏輯運算的運算規(guī)則是:只有對應(yīng)的位均為1時,與運算的結(jié)果才為1,其他的情況均為0。即:0&0=00&1=11&0=01&1=12.按位或運算按位或運算的運算規(guī)則是:只有按位或操作的對應(yīng)位均為零時,結(jié)果才為零,其他情況按位或的結(jié)果均為1。即,0|0=00|1=11|0=11|1=13.按位異或運算按位異或的運算規(guī)則是:參與按位異或運算的兩個二進制位如果相同,則結(jié)果為0,如果不同則結(jié)果為1。即,0^0=00^1=11^0=11^1=04.按位取反運算按位取反運算的運算規(guī)則是:0的按位取反結(jié)果為1,1的按位取反結(jié)果為0。即,~0=1~1=09.2.2移位運算移位運算實現(xiàn)二進制位的順序向左或向右移位。1.左移位運算左移位運算符是<<,其語法格式為:a<<n其中,a是操作數(shù),可以是一個char型或整型的變量或表達式;n是待移位的位數(shù),必須是正整數(shù)。功能是將a中所有的二進制位數(shù)向左移動n位。左移位的運算規(guī)則是:在移位過程中,各個二進位順序向左移動,右端空出的位補0,移出左端之外的位則被舍棄。例如,a=10,其二進制的存儲形式為00001010,則a<<2表示將a的各個二進制位順序左移2位:00101000,即十進制的40。2.右移位運算由左移位的規(guī)則可以看出,對于無符號數(shù)而言,左移位相當(dāng)于乘2運算,左移n位相當(dāng)于乘2的n次方。右移位運算符是>>,其語法格式為:a>>n其中,a是操作數(shù),可以是一個char型或整型的變量或表達式;n是待移位的位數(shù),必須是正整數(shù)。功能是將a中所有的二進制位數(shù)向右移動n位。右移位的運算規(guī)則是:在移位過程中,各個二進位順序向右移動,左端空出的位補0還是補1取決于被移位的數(shù)是有符號數(shù)還是無符號數(shù),具體為:⑴對于無符號數(shù)進行右移時,左端空出的為一律補0。⑵對于用補碼表示的有符號數(shù)進行右移時,如果采用邏輯右移,則不管是正數(shù)還是負數(shù),左端空位一律補0;如果采用算術(shù)右移,則正數(shù)右移,左端的空位全部補0;負數(shù)右移,左端的空位全部補1(即符號位)。TurboC采用的是算術(shù)右移。9.2.3復(fù)合賦值位運算符位運算符可以和賦值運算符構(gòu)成復(fù)合賦值位運算符。復(fù)合賦值位運算符的形式有:&=、|=、^=、~=、<<=、>>=。9.2.4不同長度的數(shù)據(jù)進行位運算當(dāng)參加位運算的兩個操作數(shù)的數(shù)據(jù)長度不等時,例如:一個int型的數(shù)據(jù),另一個long型的數(shù)據(jù),則兩個數(shù)參加運算時,系統(tǒng)自動按右對齊。對于無符號數(shù),系統(tǒng)在做對齊處理時,左端一律補0。對于有符號數(shù)來說,整數(shù)在做對齊處理時,左端補0;負數(shù)在做對齊處理時,左端補1。9.3位段位段是由一個或幾個二進制位組成的獨立數(shù)據(jù)項。如果一個結(jié)構(gòu)只含有整型的成員及位段成員,這種結(jié)構(gòu)被稱為位段結(jié)構(gòu)。因此,位段結(jié)構(gòu)只是結(jié)構(gòu)的一個特例,有關(guān)結(jié)構(gòu)的定義、引用、賦值、在函數(shù)間的傳遞等,都可以引申到位段結(jié)構(gòu)中來;位段結(jié)構(gòu)的特殊性就是其各個成員只能是整型的。因此,本節(jié)僅就位段成員方面的問題作一些說明。9.3.1位段結(jié)構(gòu)類型及位段結(jié)構(gòu)變量的定義位段結(jié)構(gòu)類型及位段結(jié)構(gòu)變量的定義格式為:struct結(jié)構(gòu)標識符{數(shù)據(jù)類型位段名1:位數(shù);數(shù)據(jù)類型位段名2:位數(shù);……數(shù)據(jù)類型位段名n:位數(shù);}[位段結(jié)構(gòu)變量表];其中,各位段的數(shù)據(jù)類型必須是int、signed或unsigned;位數(shù)為1的位段只能用unsigned;每個位段名后緊跟一個冒號,冒號后面是該位段的位數(shù)。對位段結(jié)構(gòu)的定義應(yīng)注意以下幾點:⑴各個位段必須依次單獨定義,不能把幾個位段組織成數(shù)組。⑵每個位段的長度可以超過一個字節(jié),但不能超過計算機的字長(在TurboC2.0中為16位),所有位段的總長度則可以超過一個計算機字長,超過的部分會占用下一個存儲單元。由于不允許一個位段跨越兩個字長的存儲單元,可定義一個長度為0的位段,以保證下一個位段從新的存儲單元開始。⑶如果位段結(jié)構(gòu)的總長度不足n個計算機字長,余下的位可以定義一個不使用的位段或無名位段。⑷位段結(jié)構(gòu)變量可以按位段初始化,初值表中,不需要初始化的位段用逗號跳過。⑸位段結(jié)構(gòu)中也可以包含整型的變量或數(shù)組成員,但變量或數(shù)組名后不能跟冒號和位數(shù),系統(tǒng)自動將他們從新的存儲單元開始存放。⑹結(jié)構(gòu)中可以包含位段成員。9.3.2位段結(jié)構(gòu)的存儲位段結(jié)構(gòu)中的所有成員按先后次序存放,但存儲單元中位段的空間分配方向則隨機而異。由于不同計算機的字長不同,造成使用位段結(jié)構(gòu)的程序很難移植。下面以從左到右的空間分配方式,通過實例將位段結(jié)構(gòu)存儲分配中的幾個問題說明如下:⑴每個位段結(jié)構(gòu)變量有自己的起始地址,其中的每一個整型變量或數(shù)組成員也有各自的地址,但位段成員則沒有自己的地址,不能對位段成員進行取地址運算。⑵對于前面定義的位段結(jié)構(gòu)變量ch來說,由于變量i必須從新的字節(jié)開始存放,因此系統(tǒng)自動在位段a3后面閑置5位。因此變量ch的存儲格式為:a1a2a3空閑i254516(二進制位數(shù))課程小結(jié)(10分鐘)位操作是對字節(jié)或字節(jié)內(nèi)的二進制位進行測試、設(shè)置、或邏輯的運算。位操作可以分為兩類:一類是邏輯位運算,另一類是移位運算。位邏輯運算用來對某一個或某一對二進制位進行操作,其運算符有以下幾個:~表示按位取反&表示按位與∣表示按位或^表示按位異或移位運算實現(xiàn)二進制位的順
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家庭洗衣知識培訓(xùn)課件
- 兒童清明節(jié)活動計劃
- 汽車銷售培訓(xùn)之思想意識
- 電能表維修知識培訓(xùn)課件
- 技術(shù)信息查詢服務(wù)合同書
- 企業(yè)負責(zé)人聘用協(xié)議
- 利率體制的概念
- 期貨風(fēng)險案例分析
- 三農(nóng)村居民健康城市創(chuàng)建方案
- 認知心理學(xué)與行為分析
- 第2課++生涯規(guī)劃+筑夢未來(課時2)【中職專用】中職思想政治《心理健康與職業(yè)生涯》高效課堂 (高教版基礎(chǔ)模塊)
- 臨床診療指南(急診醫(yī)學(xué))
- 人教PEP英語五年級下冊全冊教案(表格教學(xué)設(shè)計)
- DZ∕T 0219-2006 滑坡防治工程設(shè)計與施工技術(shù)規(guī)范(正式版)
- 密目網(wǎng)覆蓋施工方案
- 家族族譜資料收集表
- 放射科護士講課
- 2024年人力資源管理師三級考試真題及答案
- 2024年湖南有色金屬職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫標準卷及解析
- 商品房施工組織設(shè)計
- 水務(wù)集團每年試題及答案
評論
0/150
提交評論