版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章面向?qū)ο螅ㄉ希┠K一順序程序設(shè)計訓(xùn)練-9-課題名稱模塊九位操作訓(xùn)練計劃學(xué)時4學(xué)時內(nèi)容分析位操作是程序設(shè)計中對位模式按位或二進制數(shù)的一元和二元操作。C語言中共有6種位運算符。位運算主要用在檢測和控制領(lǐng)域的程序設(shè)計中。教學(xué)目標及基本要求(1)理解位運算的含義及使用;(2)了解位段的定義、存儲及使用。教學(xué)重點按位與(&)、按位或(|)、按位異或(^)、按位取反(~)及移位(>>、<<)教學(xué)難點按位異或(^)、按位取反(~)教學(xué)方式教學(xué)采用教師課堂講授與學(xué)生操作練習(xí)共同進行的一體化教學(xué)方式概念性知識點:提出為什么,將抽象具體化,配合教學(xué)PPT、案例輔助講解。操作性知識點:提需求,并上機演示如何操作,重點內(nèi)容總結(jié)經(jīng)驗及注意事項。學(xué)生操作練習(xí):完成教材中的引例、做中學(xué)以及練中學(xué)案例,有能力的學(xué)生還可以完成教師額外布置的拓展練習(xí)題目。教學(xué)過程第一、二、三學(xué)時(按位與、按位或、按位異或、按位取反、移位)一、引例任務(wù),提出需求(1)通過引力任務(wù),引出本節(jié)所需知識內(nèi)容?!疽蝿?wù)】不用第三個變量,完成兩個變量值的交換。方案一:傳統(tǒng)算法是通過第三個變量完成交換?!境绦虼a】voidswap1(int*a,int*b){
inttemp;
temp=*a;
*a=*b;
*b=temp;}方案二:加減運算,把第一個變量當(dāng)緩沖變量用?!境绦虼a】voidswap2(int*a,int*b){
*a=*a+*b;
*b=*a-*b;//b中放原來a中的值
*a=*a-*b;//用這1條語句a
=
a
+
b
-
(b
=
a);
代替3條語句}方案三:乘除運算,是把第一個變量當(dāng)緩沖變量用?!境绦虼a】voidswap3(int*a,int*b){
*a=(*a)*(*b);
*b=(*a)/(*b);//b中放原來a中的值
*a=(*a)/(*b);//用這1條語句a
=
a
+
b
-
(b
=
a);
代替3條語句}方案四:異或運算?!境绦虼a】#include"stdio.h"voidswap4(int*a,int*b){
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;}intmain(){
inta=123,b=321;
swap1(&a,&b);printf("a=%d,b=%d\n",a,b);swap2(&a,&b);printf("a=%d,b=%d\n",a,b);
swap3(&a,&b);
printf("a=%d,b=%d\n",a,b);swap4(&a,&b);printf("a=%d,b=%d\n",a,b);
return0;}【程序運行】a=321,b=123a=123,b=321a=321,b=123a=123,b=321(2)明確學(xué)習(xí)方向?!局R點】按位與(&)運算按位或(|)運算按位異或(^)按位取反(~)移位(>>、<<)運算復(fù)合賦值位運算【能力點】理解位運算的含義及使用了解位段的定義、存儲及使用明確目標,完成任務(wù)一般用字節(jié)(Byte)作為計算機信息的基本單位,一B由8個二進制位組成,其中最右邊的一位稱為“最低有效位”LSB,最左邊的一位稱為“最高有效位”MSB。最低有效位也稱第0位,最高有效位也稱第7位。通常用1字節(jié)、2字節(jié)、4字節(jié)、8字節(jié)表示一個信息。例如,用l字節(jié)表示一個英文字符,2字節(jié)表示一個漢字字符,4字節(jié)表示一個實數(shù)等等。1.按位與運算(&)【做中學(xué)9-1】〖〗設(shè)有X=10,Y=8,Z=X&Y(按位與),求Z的值?!境绦虼a】#include<stdio.h>voidmain(){intX=10,Y=8;intZ;Z=X&Y;printf(“Z=%d\n”;Z);}1)運算規(guī)則只有對應(yīng)的位都為1時,按位與運算的結(jié)果才為1,其他的情況均為0,即:0&0=00&1=01&0=01&1=12)按位與運算的用途(1)可以對某位進行清0操作方法:將需要清0的對應(yīng)位與0進行按位與操作即可。(2)可以提取指定位方法:將需要提取的位與1進行按位與操作即可按位或運算(|)【做中學(xué)9-2】假設(shè)有X=12,Y=9,Z=X|Y(按位或),則求Z的值?!境绦虼a】#include<stdio.h>voidmain(){intX=12,Y=9;intZ;Z=X|Y;printf(“Z=%d\n”;Z);}1)運算規(guī)則只有對應(yīng)的位都為0時,按位或運算的結(jié)果才為0,其他的情況均為1,即:0|0=00|1=11|0=11|1=12)按位或運算的用途主要是對數(shù)據(jù)的某些位進行置1操作。方法:將需要置1的位與1進行按位或操作即可。按位異或運算(^)【做中學(xué)9-3】設(shè)有X=10,Y=8,Z=X^Y(按位異或),求Z的值?!境绦虼a】#include<stdio.h>voidmain(){intX=10,Y=8;intZ;Z=X^Y;printf(“Z=%d\n”;Z);}1)運算規(guī)則參與按位異或運算的兩個二進制位如果值相同,則結(jié)果為0,如果不同則結(jié)果為1.即:0^0=00^1=11^0=11^1=02)按位異或運算用途(1)與0異或,可以保留原值方法:原數(shù)中的1與0進行異或運算得1,0與0異或運算的0。(2)將特定位翻轉(zhuǎn)方法:要翻轉(zhuǎn)的位與1異或運算,其余位與0異或運算。、(3)實現(xiàn)兩個變量值的交換【引例任務(wù)】的方案四就是利用異或運算完成了兩個變量值的交換。按位取反運算(~)【做中學(xué)9-4】設(shè)有X=10,Z=~X(按位取反),求Z的值?!境绦虼a】#include<stdio.h>voidmain(){intX=10;intZ;Z=~X;printf(“Z=%d\n”;Z);}1)運算規(guī)則對一個二進制數(shù)按位取反,即將0變?yōu)閘,1變?yōu)?。2)注意事項(1)單目運算符,具有右結(jié)合性;(2)~運算符的優(yōu)先級別最高。5.左移運算(<<)語法格式:a<<n其中:a是操作數(shù),可以是一個char或整型的變量或表達式;n是移位次數(shù),必須是正整數(shù)。功能是將a中所有的二進制位數(shù)向左移動n位。運算規(guī)則:在移位過程中,各個二進制位順序向左移動,右端空出的位補0,移出左端之外的位則被舍棄。6.右移運算(>>)語法格式:a>>n其中:a是操作數(shù),可以是一個char或整型的變量或表達式;n是移位次數(shù),必須是正整數(shù)。功能是將a中所有的二進制位數(shù)向右移動n位。運算規(guī)則:在移位過程中,各個二進制位順序向右移動,移出右端之外的位則被舍棄,左端空出的位補0還是1取決于被移位的數(shù)是有符號數(shù)還是無符號數(shù),具體為:(1)對于無符號數(shù)最高位即左端空出的位一律補0;(2)對于有符號數(shù):正數(shù)則最高位補0,如果為負數(shù),左端最高位補0還是補1則取決于所用的C編譯系統(tǒng)。如果補0則稱為“邏輯右移”,補l則稱為“算術(shù)右移”。7.復(fù)合賦值位運算位運算符與賦值運算符相結(jié)合,就組成復(fù)合賦值運算符?!咀鲋袑W(xué)9-5】將變量x的4-7位看成一個整數(shù)值,求這個值的大小?!境绦虼a】#include<stdio.h>voidmain(){intx,y;printf("請輸入一個16進制表示的正整數(shù):");scanf("%x",&x);y=0;y=~y;y<<=4;y=~y;//低4位全為1,其余位為0x=x>>4;x&=y;printf("該數(shù)的4-7位用十六進制表示是:%x\n",x);}三、歸納總結(jié),布置課后作業(yè)(1)回顧上課前的學(xué)習(xí)目標,對本節(jié)課知識點進行總結(jié)。(2)掃描二維碼查看相應(yīng)資源,完成課后實訓(xùn)題。第四學(xué)時(邊學(xué)邊練、實訓(xùn)題)一、上機練習(xí)【能力點】理解位運算的作用理解和掌握位運算的應(yīng)用掌握位段的定義及使用【練中學(xué)9-1】將十進制數(shù)轉(zhuǎn)換為二進制形式?!境绦虼a】#include<stdio.h>voidputbit(intz,intn){ inti; for(i=n-1;i>=0;i--)/*從高位到低位逐位轉(zhuǎn)換成字符0和1并輸出到屏幕*/ putchar('0'+(1&z>>i));}voidmain(){ intx; printf("請輸入一個十進制整數(shù)。"); scanf("%d",&x);printf("對應(yīng)的二進制數(shù)是:");putbit(x,sizeof(int)*8); printf("\n");}【練中學(xué)9-2】編寫一個位運算演示器,該程序能演示計算機中每位二進制位運算的運算過程。?!境绦虼a】#include"stdio.h"voidputbit(intz,intn){ inti; for(i=n-1;i>=0;i--)/*從高位到低位逐位轉(zhuǎn)換成字符0和1并輸出到屏幕*/ putchar('0'+(1&z>>i));}voidmain(){ charf; inta,b; voidys(char,int,int); voidfys(int); f='|'; printf("\n用戶輸入位運算表達式格式如下:"); printf("\n格式1:雙目運算符(&,|,^)整型常量1整型常量2");printf("\n格式2:單目運算符(~)整型常量"); while(f!='e'){ printf("\n請輸入:"); scanf("%c",&f); if(f=='e')break; scanf("%d",&a); if(f!='~')scanf("%d",&b); if(f=='~')fys(a); if(f=='&'||f=='|'||f=='^')ys(f,a,b); }}voidys(charfh,intx,inty){ intz; printf("\n運算前%d:\t",x); putbit(x,sizeof(int)*8); printf("對應(yīng)16進制數(shù)%X",x); printf("\n運算前%d:\t",y); putbit(y,sizeof(int)*8); printf("對應(yīng)16進制數(shù)%X",y);if(fh=='&')z=x&y;if(fh=='|')z=x|y;if(fh=='^')z=x^y; printf("\n運算后%d%c%d:\t",x,fh,y); putbit(z,sizeof(int)*8); printf("對應(yīng)16進制數(shù)%X",
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024全新建筑垃圾清運包工合同范本下載3篇
- 套筒類零件課程設(shè)計
- AI技術(shù)應(yīng)用服務(wù)合同
- 2024版校園食堂食材采購合同范本(含溯源體系)3篇
- 2024版會展中心場地租賃保證金及展會組織服務(wù)合同3篇
- 2024版深加工工程玻璃銷售及安裝服務(wù)合同3篇
- 2024版智能化控制系統(tǒng)開發(fā)合同2篇
- 2024年度農(nóng)產(chǎn)品加工收益分成協(xié)議書模板3篇
- 2024年度房地產(chǎn)項目配套設(shè)施轉(zhuǎn)讓合同3篇
- 2024版房屋反擔(dān)保抵押工程承包合同規(guī)范2篇
- 中外文化比較專題智慧樹知到期末考試答案2024年
- 初中英語翻譯專題訓(xùn)練100題含答案
- 基于機器學(xué)習(xí)的查詢優(yōu)化
- 2024屆浙江省義烏市稠州中學(xué)數(shù)學(xué)八年級下冊期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 防化兵知識課件
- GB/T 29319-2024光伏發(fā)電系統(tǒng)接入配電網(wǎng)技術(shù)規(guī)定
- 政府投資建設(shè)項目審計
- 慢性腎臟病臨床診療指南
- 設(shè)計與規(guī)劃的城市更新
- 網(wǎng)絡(luò)運行以及維護
- 土木工程材料-說課
評論
0/150
提交評論