自考計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)11_第1頁
自考計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)11_第2頁
自考計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)11_第3頁
自考計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)11_第4頁
自考計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)11_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——自考計(jì)算機(jī)基礎(chǔ)與程序設(shè)計(jì)11

第九章

位運(yùn)算與預(yù)處理

第一節(jié)位運(yùn)算其次節(jié)宏定義第三節(jié)文件包含第四節(jié)預(yù)編譯

共26頁

第2頁

運(yùn)算符

()括號(hào)單目運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符規(guī)律運(yùn)算符條件運(yùn)算符

改變表達(dá)式中的優(yōu)先級關(guān)系

++;--;!;-(負(fù)),*(指針),(取地址)*;/;%+;;;=;===;!=||?:

賦值運(yùn)算符逗號(hào)運(yùn)算符

=;+=;-=;*=;/=;%=,低

位運(yùn)算符

將參與運(yùn)算的兩個(gè)操作數(shù),按對應(yīng)的二進(jìn)制位分別進(jìn)行以下運(yùn)算

按位與

|按位或

~

^

位左移

位右移

按位取反按位異或

2)算術(shù)表達(dá)式的格式:~是單目運(yùn)算符:~a其余都是雙目運(yùn)算符:ab,a|b,a2,b23)操作步驟1)將運(yùn)算分量轉(zhuǎn)化為二進(jìn)制(默認(rèn)8位二進(jìn)制)轉(zhuǎn)化時(shí)右端對齊,假使位數(shù)不夠,左邊補(bǔ)符號(hào)位,即正數(shù)補(bǔ)0,負(fù)數(shù)補(bǔ)1.inta=3,b=5,d;d=ab?

a00000011

b00000101

2)再針對每個(gè)二進(jìn)制位進(jìn)行位運(yùn)算3)運(yùn)算后的結(jié)果轉(zhuǎn)回為十進(jìn)制

位運(yùn)算符

操作步驟1)將運(yùn)算分量轉(zhuǎn)化為二進(jìn)制(默認(rèn)8位二進(jìn)制)2)再針對每個(gè)二進(jìn)制位進(jìn)行位運(yùn)算3)結(jié)果轉(zhuǎn)回十進(jìn)制

1.按位與--按位與運(yùn)算:假使兩個(gè)對應(yīng)的位都是1,則該位為1,否則為0.inta=3,b=5,d;d=ab?

0000001110000010100000001

1)將a,b轉(zhuǎn)化二進(jìn)制2)進(jìn)行位與運(yùn)算3)將結(jié)果轉(zhuǎn)回十進(jìn)制

位運(yùn)算符

操作步驟1)將運(yùn)算分量轉(zhuǎn)化為二進(jìn)制(默認(rèn)8位二進(jìn)制)2)再針對每個(gè)二進(jìn)制位進(jìn)行運(yùn)算3)結(jié)果轉(zhuǎn)回十進(jìn)制

2.按位或--|按位或運(yùn)算:假使兩個(gè)對應(yīng)的位有一個(gè)1,則該位為1,否則為0.inta=3,b=5,d;d=a|b?

000000117|0000010100000111

1)將a,b轉(zhuǎn)化二進(jìn)制2)進(jìn)行位或運(yùn)算3)將結(jié)果轉(zhuǎn)回十進(jìn)制

位運(yùn)算符

操作步驟1)將運(yùn)算分量轉(zhuǎn)化為二進(jìn)制(默認(rèn)8位二進(jìn)制)2)再針對每個(gè)二進(jìn)制位進(jìn)行運(yùn)算3)結(jié)果轉(zhuǎn)回十進(jìn)制

3.按位異或--^按位異或運(yùn)算:假使兩個(gè)對應(yīng)的位不同,則為1,否則為0.00000011inta=3,b=5,d;d=a^b?

6

~

0000010100000110

1)將a轉(zhuǎn)化二進(jìn)制2)進(jìn)行位異或運(yùn)算3)將結(jié)果轉(zhuǎn)回十進(jìn)制

位運(yùn)算符

操作步驟1)將運(yùn)算分量轉(zhuǎn)化為二進(jìn)制(默認(rèn)8位二進(jìn)制)2)再針對每個(gè)二進(jìn)制位進(jìn)行運(yùn)算3)結(jié)果轉(zhuǎn)回十進(jìn)制

4.按位取反--~按位取反運(yùn)算:假使位為1,則結(jié)果為0,假使位為0,結(jié)果為1.注意:單目運(yùn)算符,格式:~a~inta=5,b;b=~a?

0000010111111010符號(hào)位為1,說明是負(fù)數(shù)

-6轉(zhuǎn)十進(jìn)制

1)將a轉(zhuǎn)化二進(jìn)制2)進(jìn)行位取反運(yùn)算除符號(hào)外,位取反100001013)將結(jié)果轉(zhuǎn)回十進(jìn)制末尾+110000110

位運(yùn)算符

操作步驟1)將運(yùn)算分量轉(zhuǎn)化為二進(jìn)制(默認(rèn)8位二進(jìn)制)2)再針對每個(gè)二進(jìn)制位進(jìn)行運(yùn)算3)結(jié)果轉(zhuǎn)回十進(jìn)制

5.位左移()和位右移()將一個(gè)數(shù)的全部二進(jìn)制位左移或右移若干位.格式:左邊是移位處理的對象,右邊是整數(shù)表達(dá)式,表

示移動(dòng)多少位a2a2201

00000101

inta=5,b;b=a2?b=a2;

a20001010000000101a200000001

1)左移時(shí),低位補(bǔ)02)右移時(shí),對于正數(shù),高位補(bǔ)0,對于負(fù)數(shù),高位補(bǔ)1

位運(yùn)算符

將參與運(yùn)算的兩個(gè)操作數(shù),按對應(yīng)的二進(jìn)制位分別進(jìn)行以下運(yùn)算

~按位取反

按位與

|

^

位左移

位右移

按位或按位異或

3)優(yōu)先級~取反,位移位與^位異或|位或4)結(jié)合性:取反是自右向左其余是自左向右注意:1)位運(yùn)算都只能針對整數(shù)和字符型數(shù)據(jù)2323.0錯(cuò)誤2)位運(yùn)算和賦值運(yùn)算符一起構(gòu)成復(fù)合賦值運(yùn)算符=,|=,^=,=,=

位運(yùn)算符舉例:00000011inta=3,b=11;表達(dá)式~ab結(jié)果?8~a11111100000010110000100000000011inta=3,b=11;表達(dá)式a|b結(jié)果?|0000101100001011共26頁第11頁

運(yùn)算符高

()括號(hào)單目運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符規(guī)律運(yùn)算符條件運(yùn)算符

改變表達(dá)式中的優(yōu)先級關(guān)系

++;--;!;-(負(fù)),*(指針),(取地址),~*;/;%+;-,;;=;===;!=^|||?:

賦值運(yùn)算符逗號(hào)運(yùn)算符

=;+=;-=;*=;/=;%=,低

預(yù)處理C語言程序的執(zhí)行過程:編寫源程序(.c)編譯程序(.obj)鏈接程序可執(zhí)行程序(.exe)執(zhí)行程序,獲得結(jié)果

預(yù)處理:程序被編譯以前,編譯系統(tǒng)會(huì)先對程序中三種特別的命令進(jìn)行〞預(yù)先處理〞,然后將預(yù)處理結(jié)果和源程序進(jìn)行編譯.宏定義預(yù)處理

#define#include

用一個(gè)名字代替一個(gè)字符串使用庫函數(shù)時(shí),包含相應(yīng)頭文件

文件包含條件編譯

#ifdef….#endif依照不同條件選擇編譯不同的程序部分

預(yù)處理宏的使用:包括宏定義、宏調(diào)用和宏展開三部分1)編程人員為了縮短編寫代碼的長度,用宏定義說明用一個(gè)宏名代替一個(gè)長的字符串。例如:#definePI3.14159262)在編程時(shí),用到長字符串的地方用宏名替代,這個(gè)過程稱為例如:S=PI*r*r;宏調(diào)用。3)在編譯前,系統(tǒng)如何理解這些宏調(diào)用?根據(jù)宏定義,系統(tǒng)自動(dòng)將所有宏名換回長字符串,這個(gè)過程稱為宏展開.我們閱讀別人編寫的宏調(diào)用也做這樣的替換舉例:#definePI3.1415926main(){intr=3;doubles,d;d=2*PI*r;/*圓周長*/S=PI*r*r;/*面積*/}main(){intr=3;doubles,d;d=2*3.1415926*r;/*圓周長*/S=3.1415926*r*r;/*面積*/}

預(yù)編譯

宏展開

預(yù)處理使用宏的意義:

舉例:#definePI3.1415926main(){intr=3;doubles,d;d=2*PI*r;/*圓周長*/S=PI*r*r;/*面積*/}

優(yōu)點(diǎn):1)用短小有意義的名字代替一長串的字符,減少輸入量2)便于修改.修改一個(gè)地方,則全部修改

預(yù)處理宏分為:無參宏和帶參宏

1)無參宏定義:告訴系統(tǒng),用標(biāo)識(shí)符來表示一個(gè)字符序列宏定義命令宏名,一般大寫

常數(shù),表達(dá)式

格式:#define

標(biāo)識(shí)符

字符序列

不以分號(hào)結(jié)尾定義符號(hào)常量的方法就是

分隔用空格分隔用空格

宏定義寫在函數(shù)的外面,一般在文件開頭一種宏定義#definePI3.14159262)無參宏調(diào)用:在程序里,用到字main()符序列的地方改用標(biāo)識(shí)符{intr=3;doubles,d;d=2*PI*r;/*圓周長*/3)無參宏展開:系統(tǒng)自動(dòng)將宏名替S=PI*r*r;/*面積*/換為字符序列d=2*3.1415926*rs=3.1415926*r*r;}

預(yù)處理進(jìn)行宏定義時(shí),可以引用已定義的宏名,可以層層替換舉例:#defineR3#definePI3.1415926#defineD2*PI*Rmain(){printf(“%f〞,D);}

D2*PI*R2*3.1415926*3

預(yù)處理1)帶參宏定義:多個(gè)參數(shù)由逗號(hào)分隔

格式:#define

標(biāo)識(shí)符(形參列表)字符序列隔開用空格

隔開用空格

2)帶參宏定義的調(diào)用:標(biāo)識(shí)符(實(shí)參列表);/*實(shí)參可以是數(shù)值和表達(dá)式*/

3)帶參宏定義的展開(系統(tǒng)如何理解帶參的宏調(diào)用?):宏調(diào)用置換為字符序列.將字符序列中,所有形參符號(hào)(a,b)用實(shí)參符號(hào)(3,4)來置換,替換的過程是簡單的符號(hào)置換

#definemax(a,b)(ab)?a:bmax(3,4)max(3,4)展開為34?3:4結(jié)果:4

舉例:#definemax(a,b)(ab)?a:bmain(){inta=3,b=4,m;m=max(3,4);printf(“%d〞,m);}

預(yù)處理帶參宏:

#defineV(s1,s2)s1=i*w;s2=i*hmain(){inti=3,w=4,h=5,a,b;V(a,b);printf(“a=%d,b=%d〞,a,b);}V(a,b)置換為s1=i*w;s2=i*h

遇到宏調(diào)用,將宏調(diào)用置換為字符序列.將字符序列中,所有形參符號(hào)用實(shí)參符號(hào)來置換,替換的過程是簡單的符號(hào)置換

形參符號(hào):(s1,s2)實(shí)參符號(hào):(a,b)

將s1=i*w;s2=i*h中,所有的s1替換為a,s2替換為b,其余不變a=i*w;b=i*h;

a=12,b=15;

預(yù)處理帶參宏:

將字符序列中,所有形參符號(hào)替換為對應(yīng)實(shí)參符號(hào)

#defineS(x)x*xmain(){intm;m=S(3);m=S(3+1);}3*3(3+1)*(3+1)?結(jié)果:3+1*3+17注意:替換的過程是簡單的字符置換,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論