




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章面向對象(上)模塊一順序程序設計訓練-9-課題名稱模塊九位操作訓練計劃學時4學時內容分析位操作是程序設計中對位模式按位或二進制數的一元和二元操作。C語言中共有6種位運算符。位運算主要用在檢測和控制領域的程序設計中。教學目標及基本要求(1)理解位運算的含義及使用;(2)了解位段的定義、存儲及使用。教學重點按位與(&)、按位或(|)、按位異或(^)、按位取反(~)及移位(>>、<<)教學難點按位異或(^)、按位取反(~)教學方式教學采用教師課堂講授與學生操作練習共同進行的一體化教學方式概念性知識點:提出為什么,將抽象具體化,配合教學PPT、案例輔助講解。操作性知識點:提需求,并上機演示如何操作,重點內容總結經驗及注意事項。學生操作練習:完成教材中的引例、做中學以及練中學案例,有能力的學生還可以完成教師額外布置的拓展練習題目。教學過程第一、二、三學時(按位與、按位或、按位異或、按位取反、移位)一、引例任務,提出需求(1)通過引力任務,引出本節所需知識內容?!疽蝿铡坎挥玫谌齻€變量,完成兩個變量值的交換。方案一:傳統算法是通過第三個變量完成交換。【程序代碼】voidswap1(int*a,int*b){
inttemp;
temp=*a;
*a=*b;
*b=temp;}方案二:加減運算,把第一個變量當緩沖變量用。【程序代碼】voidswap2(int*a,int*b){
*a=*a+*b;
*b=*a-*b;//b中放原來a中的值
*a=*a-*b;//用這1條語句a
=
a
+
b
-
(b
=
a);
代替3條語句}方案三:乘除運算,是把第一個變量當緩沖變量用?!境绦虼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)明確學習方向?!局R點】按位與(&)運算按位或(|)運算按位異或(^)按位取反(~)移位(>>、<<)運算復合賦值位運算【能力點】理解位運算的含義及使用了解位段的定義、存儲及使用明確目標,完成任務一般用字節(Byte)作為計算機信息的基本單位,一B由8個二進制位組成,其中最右邊的一位稱為“最低有效位”LSB,最左邊的一位稱為“最高有效位”MSB。最低有效位也稱第0位,最高有效位也稱第7位。通常用1字節、2字節、4字節、8字節表示一個信息。例如,用l字節表示一個英文字符,2字節表示一個漢字字符,4字節表示一個實數等等。1.按位與運算(&)【做中學9-1】〖〗設有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)運算規則只有對應的位都為1時,按位與運算的結果才為1,其他的情況均為0,即:0&0=00&1=01&0=01&1=12)按位與運算的用途(1)可以對某位進行清0操作方法:將需要清0的對應位與0進行按位與操作即可。(2)可以提取指定位方法:將需要提取的位與1進行按位與操作即可按位或運算(|)【做中學9-2】假設有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)運算規則只有對應的位都為0時,按位或運算的結果才為0,其他的情況均為1,即:0|0=00|1=11|0=11|1=12)按位或運算的用途主要是對數據的某些位進行置1操作。方法:將需要置1的位與1進行按位或操作即可。按位異或運算(^)【做中學9-3】設有X=10,Y=8,Z=X^Y(按位異或),求Z的值。【程序代碼】#include<stdio.h>voidmain(){intX=10,Y=8;intZ;Z=X^Y;printf(“Z=%d\n”;Z);}1)運算規則參與按位異或運算的兩個二進制位如果值相同,則結果為0,如果不同則結果為1.即:0^0=00^1=11^0=11^1=02)按位異或運算用途(1)與0異或,可以保留原值方法:原數中的1與0進行異或運算得1,0與0異或運算的0。(2)將特定位翻轉方法:要翻轉的位與1異或運算,其余位與0異或運算。、(3)實現兩個變量值的交換【引例任務】的方案四就是利用異或運算完成了兩個變量值的交換。按位取反運算(~)【做中學9-4】設有X=10,Z=~X(按位取反),求Z的值?!境绦虼a】#include<stdio.h>voidmain(){intX=10;intZ;Z=~X;printf(“Z=%d\n”;Z);}1)運算規則對一個二進制數按位取反,即將0變為l,1變為0。2)注意事項(1)單目運算符,具有右結合性;(2)~運算符的優先級別最高。5.左移運算(<<)語法格式:a<<n其中:a是操作數,可以是一個char或整型的變量或表達式;n是移位次數,必須是正整數。功能是將a中所有的二進制位數向左移動n位。運算規則:在移位過程中,各個二進制位順序向左移動,右端空出的位補0,移出左端之外的位則被舍棄。6.右移運算(>>)語法格式:a>>n其中:a是操作數,可以是一個char或整型的變量或表達式;n是移位次數,必須是正整數。功能是將a中所有的二進制位數向右移動n位。運算規則:在移位過程中,各個二進制位順序向右移動,移出右端之外的位則被舍棄,左端空出的位補0還是1取決于被移位的數是有符號數還是無符號數,具體為:(1)對于無符號數最高位即左端空出的位一律補0;(2)對于有符號數:正數則最高位補0,如果為負數,左端最高位補0還是補1則取決于所用的C編譯系統。如果補0則稱為“邏輯右移”,補l則稱為“算術右移”。7.復合賦值位運算位運算符與賦值運算符相結合,就組成復合賦值運算符?!咀鲋袑W9-5】將變量x的4-7位看成一個整數值,求這個值的大小?!境绦虼a】#include<stdio.h>voidmain(){intx,y;printf("請輸入一個16進制表示的正整數:");scanf("%x",&x);y=0;y=~y;y<<=4;y=~y;//低4位全為1,其余位為0x=x>>4;x&=y;printf("該數的4-7位用十六進制表示是:%x\n",x);}三、歸納總結,布置課后作業(1)回顧上課前的學習目標,對本節課知識點進行總結。(2)掃描二維碼查看相應資源,完成課后實訓題。第四學時(邊學邊練、實訓題)一、上機練習【能力點】理解位運算的作用理解和掌握位運算的應用掌握位段的定義及使用【練中學9-1】將十進制數轉換為二進制形式?!境绦虼a】#include<stdio.h>voidputbit(intz,intn){ inti; for(i=n-1;i>=0;i--)/*從高位到低位逐位轉換成字符0和1并輸出到屏幕*/ putchar('0'+(1&z>>i));}voidmain(){ intx; printf("請輸入一個十進制整數。"); scanf("%d",&x);printf("對應的二進制數是:");putbit(x,sizeof(int)*8); printf("\n");}【練中學9-2】編寫一個位運算演示器,該程序能演示計算機中每位二進制位運算的運算過程。?!境绦虼a】#include"stdio.h"voidputbit(intz,intn){ inti; for(i=n-1;i>=0;i--)/*從高位到低位逐位轉換成字符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("對應16進制數%X",x); printf("\n運算前%d:\t",y); putbit(y,sizeof(int)*8); printf("對應16進制數%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("對應16進制數%X",
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高壓電工考試題庫(高壓電器設備原理)綜合模擬試題
- 電磁學與現代物理:2025年A-Level物理A2模擬試卷深度剖析
- 2025年瑜伽教練職業技能認證模擬試卷-體式教學與課程設計實戰解析
- 2025年考研數學(三)線性代數與微積分經典題型精講與試題
- 【《晶體管管座工藝分析及工藝方案制定案例》1600字】
- 2025年上海市閔行區八年級上學期期中地理試卷:地圖識別與地理知識拓展訓練
- 2025年云計算工程師認證模擬試題:云平臺虛擬化技術與資源管理
- 八年級歷史期末中國古代經濟史2025版知識檢測測試卷
- 高效備考計算機二級MySQL試題及答案技巧
- 阿里java實習面試題及答案
- 【物理】跨學科實踐制作微型密度計 課件+2024-2025學年物理人教版八年級下冊
- 2025年福建三明市中考模擬英語試題完整版(含答案+聽力MP3)
- 車床工安全生產職責規章制度
- 知識產權代理人培訓課件
- 房屋市政工程生產安全重大事故隱患排查表(2024版)
- 油庫設備維護規范
- 《雙碳背景下的綠色債券發展研究國內外文獻綜述》3000字
- 銀行消保培訓
- 職業道德與法治綜合練習2024-2025學年中職高教版
- 早產兒與低出生體重兒袋鼠式護理技術規
- 統編版(2024新版)七年級下冊道德與法治期末復習背誦知識點提綱
評論
0/150
提交評論