C語(yǔ)言程序設(shè)計(jì)項(xiàng)目化教程課件第2章_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)項(xiàng)目化教程課件第2章_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)項(xiàng)目化教程課件第2章_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)項(xiàng)目化教程課件第2章_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)項(xiàng)目化教程課件第2章_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第二章

數(shù)據(jù)類型、運(yùn)算符和表達(dá)式2.1任務(wù)一項(xiàng)目中數(shù)據(jù)類型的定義2.2理論知識(shí)2.2.1C語(yǔ)言的基本數(shù)據(jù)類型2.2.2常量和變量2.2.3運(yùn)算符和表達(dá)式2.2.4數(shù)據(jù)類型轉(zhuǎn)換2.3知識(shí)擴(kuò)展2.3.1數(shù)值在計(jì)算機(jī)中的表示2.3.2位運(yùn)算2.4本章小結(jié)§2.1任務(wù)一項(xiàng)目中數(shù)據(jù)類型的定義

一、任務(wù)描述實(shí)現(xiàn)簡(jiǎn)易計(jì)算器項(xiàng)目中數(shù)據(jù)類型的定義。二、任務(wù)涉及知識(shí)要點(diǎn)

該任務(wù)涉及到數(shù)據(jù)類型、常量和變量、運(yùn)算符和表達(dá)式等知識(shí)點(diǎn)?!?.1任務(wù)一項(xiàng)目中數(shù)據(jù)類型的定義

三、任務(wù)分析(任務(wù)分析和實(shí)現(xiàn)可在學(xué)習(xí)完變量之后再講解)根據(jù)項(xiàng)目功能描述,需要定義四個(gè)變量。(1)變量data1和data2用于存放參與運(yùn)算的兩個(gè)操作數(shù),數(shù)據(jù)類型為實(shí)型(float)。(2)變量choose用于存放用戶輸入的菜單選項(xiàng),因?yàn)橹鞑藛蔚倪x項(xiàng)為0

4之間的數(shù)字,所以數(shù)據(jù)類型可用整型(int)或字符型(char)。該任務(wù)選用的是整型。(3)變量yes_no用于存放是否繼續(xù)的應(yīng)答。因?yàn)槠渲袑⒋娣庞脩糨斎氲淖址皔”,“Y”或其他字符,所以數(shù)據(jù)類型選用字符型。§2.1任務(wù)一項(xiàng)目中數(shù)據(jù)類型的定義

四、任務(wù)實(shí)現(xiàn)項(xiàng)目中所用數(shù)據(jù)類型的定義及其意義如下。main(){floatdata1,data2;//存放參與運(yùn)算的兩個(gè)操作數(shù)

intchoose;//存放用戶輸入的菜單選項(xiàng)

charyes_no;//存放是否繼續(xù)的應(yīng)答

…}相關(guān)理論知識(shí)—C語(yǔ)言的基本數(shù)據(jù)類型一、整數(shù)類型數(shù)據(jù)類型數(shù)據(jù)類型符占用字節(jié)數(shù)取值范圍基本整型int2-32768~32767短整型short[int]2-32768~32767長(zhǎng)整型long[int]4-215~(215-1)無(wú)符號(hào)整型unsigned[int]20~65535無(wú)符號(hào)短整型unsignedshort[int]20~65535無(wú)符號(hào)長(zhǎng)整型unsignedlong[int]40~(232-1)相關(guān)理論知識(shí)—C語(yǔ)言的基本數(shù)據(jù)類型二、實(shí)數(shù)類型數(shù)據(jù)類型數(shù)據(jù)類型符占用字節(jié)數(shù)有效數(shù)字取值范圍單精度f(wàn)loat47位-3.4×1038~3.4×1038雙精度double816位-1.7×10308~1.7×10308

三、字符類型數(shù)據(jù)類型數(shù)據(jù)類型符占用字節(jié)數(shù)取值范圍字符型char10~255

相關(guān)理論知識(shí)—常量和變量一、常量在程序執(zhí)行過(guò)程中,其值不能改變的量稱為常量。

1.整型常量表達(dá)方式意義十進(jìn)制值123十進(jìn)制1230123(數(shù)字字符0開(kāi)頭)八進(jìn)制830x123(0x開(kāi)頭)十六進(jìn)制291相關(guān)理論知識(shí)—常量和變量2.實(shí)型常量(1)十進(jìn)制形式由數(shù)字和小數(shù)點(diǎn)組成,如3.141。(2)指數(shù)形式又稱科學(xué)記數(shù)法,由小數(shù)和指數(shù)兩部分組成,指數(shù)部分的底數(shù)用字母e或E表示,如123.45e2和123.45E2都表示123.45×102。注意:在使用指數(shù)形式時(shí),一定要注意在字母e或E之前必須要有數(shù)字,且字母e或E之后的指數(shù)必須為整數(shù)。如e6、.e5、-2.4E0.5、5.2e(3+6)等都是不合法的指數(shù)形式。相關(guān)理論知識(shí)—常量和變量3.字符常量(1)普通字符字符常量是用一對(duì)單引號(hào)括起來(lái)的單個(gè)字符,如'A'、'5'、'+'等。(2)轉(zhuǎn)義字符以"\"開(kāi)頭的字符序列,稱為“轉(zhuǎn)義序列”,“\”使其后面的字符變?yōu)榱硗獾囊饬x。見(jiàn)下表。相關(guān)理論知識(shí)—常量和變量字符形式功能\n換行符\t橫向跳格:跳到下一個(gè)輸出區(qū)(8個(gè)字符)\v豎向跳格\b退格\r回車(回到本行起始字符位置)\f走紙換頁(yè)\\反斜杠字符\\'單引號(hào)(撇號(hào))'\ddd1~3位八進(jìn)制數(shù)所代表的字符。如\101表示'A'\xhh1~2位十六進(jìn)制數(shù)所代表的字符。如\x41表示'A'相關(guān)理論知識(shí)—常量和變量4.字符串常量字符串常量是用一對(duì)雙引號(hào)括起來(lái)的零個(gè)或多個(gè)字符,其中雙引號(hào)僅起定界作用,本身并不是字符串中的內(nèi)容。如“”、“Helloworld”、“123”等。字符常量與字符串常量的主要區(qū)別是:①定界符不同:字符常量使用單引號(hào),而字符串常量使用雙引號(hào)。②長(zhǎng)度不同:字符常量只能是單個(gè)字符,字符串常量則可以包含一個(gè)或多個(gè)字符。③占用內(nèi)存大小不同:字符常量占一個(gè)字節(jié),而字符串常量除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志'\0'。相關(guān)理論知識(shí)—常量和變量5.符號(hào)常量符號(hào)常量是指用符號(hào)表示的常量。符號(hào)常量在使用之前必須先定義。其定義的一般格式為:#define標(biāo)識(shí)符常量其中標(biāo)識(shí)符是以字母或下劃線開(kāi)頭,并且只能是由字母、數(shù)字和下劃線組成的字符序列。標(biāo)識(shí)符通常作為變量、符號(hào)常量、函數(shù)及用戶定義對(duì)象的名稱。其有效長(zhǎng)度為1至32個(gè)字符,但為了便于程序閱讀,建議不超過(guò)8個(gè)字符。相關(guān)理論知識(shí)—常量和變量【例2.1】符號(hào)常量的使用。#definePI3.1416926//定義符號(hào)常量PI,表示圓周率main(){ floatr,area;//定義變量r表示圓的半徑,area表示圓的面積

r=5.0;area=PI*r*r;printf("area=%f\n",area);}程序運(yùn)行結(jié)果如下:area=78.542315作用:1、修改程序方便2、見(jiàn)名知意相關(guān)理論知識(shí)—常量和變量二、變量變量是指在程序執(zhí)行過(guò)程中其值可以被改變的量。在使用變量之前,必須先對(duì)其進(jìn)行定義。1.變量定義變量定義的格式是:類型說(shuō)明符變量1,變量2,…,變量n;例如:intyear,month,day;charch;floatr,area;相關(guān)理論知識(shí)—常量和變量2.變量賦初值(1)在定義變量時(shí)賦值。例如:floatdata1=1.5,data2=2.6;intchoose=1;charyes_no='y';(2)先定義后賦值。例如:floatdata1,data2;//變量定義部分data1=1.5;data2=2.6;//變量賦初值使用變量時(shí)需要注意:在C語(yǔ)言中,變量定義不是可執(zhí)行語(yǔ)句,必須出現(xiàn)在可執(zhí)行語(yǔ)句之前。同一變量只能定義一次,不能重復(fù)。變量名不能是C語(yǔ)言的關(guān)鍵字,要見(jiàn)名知意,并盡可能簡(jiǎn)短。變量的類型應(yīng)該根據(jù)變量的取值范圍來(lái)選擇,以占用內(nèi)存少,操作簡(jiǎn)便為優(yōu)。C語(yǔ)言沒(méi)有提供字符串類型,字符串是用字符數(shù)組或指針來(lái)處理的。相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式一、算術(shù)運(yùn)算符及其表達(dá)式算術(shù)表達(dá)式也稱為數(shù)值型表達(dá)式,由算術(shù)運(yùn)算符、數(shù)值型常量、變量、函數(shù)和圓括號(hào)組成,其運(yùn)算結(jié)果為數(shù)值。算術(shù)運(yùn)算符分為單目運(yùn)算符和雙目運(yùn)算符。1、雙目運(yùn)算符需要兩個(gè)操作數(shù)參與,得出一個(gè)結(jié)果。 有+、-、*、/、%五種。(1)除運(yùn)算

10/3=310.0/3=3.333333-5/3=-1“向零取整”原則(2)取余運(yùn)算

5%2=1算術(shù)表達(dá)式在書寫時(shí)跟數(shù)學(xué)公式有差異,例如b2-4ac應(yīng)寫為b*b-4*a*c的形式。2、單目運(yùn)算符可以和一個(gè)變量構(gòu)成一個(gè)表達(dá)式;常見(jiàn)的有自增++、自減--。自增使單個(gè)變量的值增1,自減使單個(gè)變量的值減1。有兩種用法。相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式(1)前置運(yùn)算:先增減,后運(yùn)算。 例:inti=3,j; j=++i;結(jié)果i=4,j=4 j=--I;結(jié)果i=2,j=2(2)后置運(yùn)算:先運(yùn)算,后增減。 例:inti=3,j; j=i++;結(jié)果i=4,j=3 j=i--;結(jié)果i=2,j=3相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式++i;/*在使用i之前使i加1*/--i;/*在使用i之前使i減1*/i++;/*在使用i之后使i加1*/i--;/*在使用i之后使i減1*/相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式注意:(1)++和--只能用于變量,不能用于常量和表達(dá)式。例:5++;(a+b)++;#defineONE1;ONE++;相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明1.在表達(dá)式中使用++或--,容易出錯(cuò)。

i=3;k=(i++)+(i++)+(i++)k值等于9。i++:先使用i,再加1。

執(zhí)行后:k=3+3+3=9。

i=6。k=(++i)+(++i)+(++i)k值等于18。++i:先加1,再使用i。連續(xù)3次使i加1后,i的值等于6.k=6+6+6=18;2.調(diào)用函數(shù)時(shí),實(shí)際參數(shù)的處理順序是從右到左(稱為C調(diào)用約定。)例:i=3;printf("%d,%d",i,i++);先右:i++,先使用i(3),再使i加1。后左:i(現(xiàn)在值為4)。因此,輸出結(jié)果:4,3有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明二、賦值運(yùn)算符及其表達(dá)式1.簡(jiǎn)單賦值運(yùn)算符:=作用:將一個(gè)表達(dá)式的值賦給變量。一般形式:<變量><賦值運(yùn)算符><表達(dá)式>例a=3;/*常數(shù)3賦給變量a。常數(shù)是特殊的表達(dá)式*/a=b+c+1;相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式復(fù)合賦值運(yùn)算符例子語(yǔ)句等價(jià)語(yǔ)句+=a+=3;a=a+3;*=x*=y+8;x=x*(y+8)%=x%=3;x=x%3;2.復(fù)合賦值運(yùn)算符:相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式三、關(guān)系運(yùn)算符及其表達(dá)式關(guān)系運(yùn)算符用于比較兩個(gè)操作數(shù)之間的關(guān)系,若成立,返回一個(gè)邏輯真值,否則,返回一個(gè)邏輯假值。用“1”表示邏輯真值,“0”表示邏輯假值。在判斷一個(gè)量是否為真時(shí),0表示假,非0表示真。關(guān)系運(yùn)算符六種:>、<、>=、<=、==、!=屬于雙目運(yùn)算符,前四種的優(yōu)先級(jí)高于后兩種。==與=的區(qū)別。常用表達(dá)式i%2==0判斷i的奇偶性。相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式四、邏輯運(yùn)算符及其表達(dá)式邏輯表達(dá)式是用邏輯運(yùn)算符將一個(gè)或多個(gè)表達(dá)式連接起來(lái)的式子。返回值也是邏輯真或邏輯假。三種:!&&||

(1)?。?)&&

(3)||

例:choose>=1&&choose<=4來(lái)判斷輸入是否在1~4之間。

P20:注意。相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式五、條件運(yùn)算符及其表達(dá)式?:三元運(yùn)算符,唯一一個(gè)表達(dá)式1?表達(dá)式2:表達(dá)式3

如果1的值非0,運(yùn)算結(jié)果為表達(dá)式2的值。否則,結(jié)果為表達(dá)式3的值。例:min=(a<b)?a:b

若a<b,min=a;若a>b,min=b.

優(yōu)先級(jí)較低,僅高于賦值和逗號(hào)運(yùn)算符,方向是從右向左結(jié)合。相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式六、逗號(hào)運(yùn)算符及其表達(dá)式由逗號(hào)把若干個(gè)表達(dá)式連接起來(lái)的式子,成為逗號(hào)表達(dá)式,優(yōu)先級(jí)最低。表達(dá)式1,表達(dá)式2,…表達(dá)式n

求解過(guò)程是自左至右一次計(jì)算各表達(dá)式的值,表達(dá)式n的值即為整個(gè)逗號(hào)表達(dá)式的值。例,已知長(zhǎng)方體的長(zhǎng)寬高,求體積。

a=3,b=4,c=5,v=a*b*c

則整個(gè)逗號(hào)表達(dá)式的值為60.相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式七、sizeof運(yùn)算符單目運(yùn)算符,返回變量,常量或類型在內(nèi)存中占有的字節(jié)數(shù)。一般形式:sizeof(類型名或表達(dá)式)例:

sizeof(int)//獲取整型數(shù)據(jù)所占內(nèi)存空間的字節(jié)數(shù),值為2sizeof(float)//值為4sizeof(“Hello”)//值為6

同一種數(shù)據(jù)類型在不同的編譯系統(tǒng)中所占空間不一定相同。例如,在基于16位的編譯系統(tǒng)中(如TurboC2.0),int型數(shù)據(jù)占用2個(gè)字節(jié),但在基于32位的編譯系統(tǒng)中(如VC++6.0),int型數(shù)據(jù)要占用4個(gè)字節(jié)。因此為了便于移植程序,最好用sizeof運(yùn)算符計(jì)算數(shù)據(jù)類型長(zhǎng)度。相關(guān)理論知識(shí)—運(yùn)算符和表達(dá)式相關(guān)理論知識(shí)—數(shù)據(jù)類型轉(zhuǎn)換

不同類型的數(shù)據(jù)進(jìn)行混合運(yùn)算時(shí),必須先轉(zhuǎn)換成同一類型,然后再進(jìn)行運(yùn)算。數(shù)據(jù)類型轉(zhuǎn)換分為自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。一、自動(dòng)類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換又稱隱式類型轉(zhuǎn)換,是由系統(tǒng)按類型轉(zhuǎn)換規(guī)則自動(dòng)完成的。其轉(zhuǎn)換規(guī)則如圖2-2所示。相關(guān)理論知識(shí)—數(shù)據(jù)類型轉(zhuǎn)換(1)橫向向左的箭頭,表示無(wú)條件的轉(zhuǎn)換。如char和short型無(wú)條件自動(dòng)轉(zhuǎn)換成int型,float型則無(wú)條件自動(dòng)轉(zhuǎn)換成double型。(2)縱向向上的箭頭,表示不同類型的轉(zhuǎn)換方向。如int型與double型數(shù)據(jù)進(jìn)行運(yùn)算,先將int型數(shù)據(jù)轉(zhuǎn)換成double型,然后在兩個(gè)同類型數(shù)據(jù)間進(jìn)行運(yùn)算,其結(jié)果為double型相關(guān)理論知識(shí)—數(shù)據(jù)類型轉(zhuǎn)換

總之,如果兩個(gè)操作對(duì)象有一個(gè)是float型或double型,則另一個(gè)要先轉(zhuǎn)換為double型,運(yùn)算結(jié)果為double型;如果參加運(yùn)算的兩個(gè)數(shù)據(jù)中最高級(jí)別為long,則另一個(gè)數(shù)據(jù)先轉(zhuǎn)換成long型,運(yùn)算結(jié)果為long型。不要理解為什么類型的運(yùn)算都轉(zhuǎn)換成double型,也不要理解為轉(zhuǎn)換是一級(jí)一級(jí)完成的。如int轉(zhuǎn)換成double的過(guò)程,不是int->unsigned->long->double,而是直接將int型轉(zhuǎn)成double型。相關(guān)理論知識(shí)—數(shù)據(jù)類型轉(zhuǎn)換相關(guān)理論知識(shí)—強(qiáng)制類型轉(zhuǎn)換

強(qiáng)制類型轉(zhuǎn)換又稱顯式類型轉(zhuǎn)換,是由程序員在程序中用類型轉(zhuǎn)換運(yùn)算符明確指明的轉(zhuǎn)換操作。通常,當(dāng)使用隱式類型轉(zhuǎn)換不能滿足要求時(shí),就需要在程序中用強(qiáng)制類型轉(zhuǎn)換。其一般形式為:(類型名)(表達(dá)式)功能:把表達(dá)式結(jié)果的類型轉(zhuǎn)換為第一個(gè)圓括號(hào)中的數(shù)據(jù)類型。當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡(jiǎn)單表達(dá)式時(shí),其外面的一對(duì)原括號(hào)可以省略。例如:(double)a//將變量a的值轉(zhuǎn)換成double型,等價(jià)于(double)(a)(int)(x+y)//將x+y的結(jié)果轉(zhuǎn)換成int型(float)5/2//將5轉(zhuǎn)換成實(shí)型后除以2,等價(jià)于(float)(5)/2,結(jié)果為2.5(float)(5/2)//將5整除2的結(jié)果轉(zhuǎn)換成實(shí)型,結(jié)果為2.0注意:無(wú)論是自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換還是強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換都是臨時(shí)性的,它們都不能改變各個(gè)變量原有的數(shù)據(jù)類型和取值的大小。相關(guān)理論知識(shí)—強(qiáng)制類型轉(zhuǎn)換知識(shí)擴(kuò)展數(shù)值在計(jì)算機(jī)中的表示1.二進(jìn)制位與字節(jié)計(jì)算機(jī)系統(tǒng)的內(nèi)存儲(chǔ)器由許多稱為字節(jié)的單元組成,1個(gè)字節(jié)由8個(gè)二進(jìn)制位(bit)構(gòu)成,每位的取值為0或1。最右端的1位稱為“最低位”,最左端的1位稱為“最高位”,一般用1字節(jié),2字節(jié),4字節(jié),8字節(jié)表示一個(gè)信息。例如,用1字節(jié)表示一個(gè)英文字符,2字節(jié)表示一個(gè)漢字字符,4字節(jié)表示一個(gè)實(shí)數(shù)。2.?dāng)?shù)值的原碼表示數(shù)值的原碼表示是指將最高位用作符號(hào)位(0表示正數(shù),1表示負(fù)數(shù)),其余各位代表數(shù)值本身的絕對(duì)值(以二進(jìn)制形式表示)的表示形式。為了便于描述,本節(jié)和下一節(jié)約定用1個(gè)字節(jié)表示1個(gè)整數(shù)。例如,十進(jìn)制數(shù)+9的原碼是00001001∟符號(hào)位上的0表示正數(shù)十進(jìn)制數(shù)-9的原碼是10001001∟符號(hào)位上的1表示負(fù)數(shù)知識(shí)擴(kuò)展3.?dāng)?shù)值的反碼表示數(shù)值的反碼表示分兩種情況:(1)正數(shù)的反碼:與原碼相同。例如,+9的反碼是00001001。(2)負(fù)數(shù)的反碼:符號(hào)位為1,其余各位為該數(shù)絕對(duì)值的原碼按位取反(1變?yōu)?、0變?yōu)?)。例如,-9的反碼是11110110。知識(shí)擴(kuò)展4.?dāng)?shù)值的補(bǔ)碼表示數(shù)值的補(bǔ)碼表示分兩種情況:(1)正數(shù)的補(bǔ)碼:與原碼相同。例如,+9的補(bǔ)碼是00001001。(2)負(fù)數(shù)的補(bǔ)碼:符號(hào)位為1,其余位為該數(shù)絕對(duì)值的原碼按位取反,然后整個(gè)數(shù)加1。例如,-9的補(bǔ)碼:因?yàn)槭秦?fù)數(shù),則符號(hào)位為“1”;其余7位為-9的絕對(duì)值+9的原碼0001001按位取反為1110110;再加1,所以-9的補(bǔ)碼是11110111。知識(shí)擴(kuò)展5.由補(bǔ)碼求原碼的操作(1)如果補(bǔ)碼的符號(hào)位為“0”,表示是一個(gè)正數(shù),所以補(bǔ)碼就是該數(shù)的原碼。(2)如果補(bǔ)碼的符號(hào)位為“1”,表示是一個(gè)負(fù)數(shù),求原碼的操作是:符號(hào)位不變,其余各位取反,然后再整個(gè)數(shù)加1。例如,已知一個(gè)補(bǔ)碼為11110111,則原碼是10001001(-9)。因?yàn)榉?hào)位為“1”,表示是一個(gè)負(fù)數(shù),所以該位不變,仍為“1”;其余7位1110111取反后為0001000;再加1,包括符號(hào)位,就是10001001。知識(shí)擴(kuò)展在計(jì)算機(jī)系統(tǒng)中,數(shù)值通常用補(bǔ)碼表示(存儲(chǔ)),原因在于:使用補(bǔ)碼,可以將符號(hào)位和其他位統(tǒng)一處理;同時(shí),減法也可按加法來(lái)處理。另外,兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果最高位(符號(hào)位)有進(jìn)位,則進(jìn)位被舍棄知識(shí)擴(kuò)展知識(shí)擴(kuò)展――位運(yùn)算位運(yùn)算是指進(jìn)行二進(jìn)制位的運(yùn)算,可以對(duì)操作數(shù)以二進(jìn)制位為單位進(jìn)行數(shù)據(jù)處理。位運(yùn)算經(jīng)常應(yīng)用于設(shè)備驅(qū)動(dòng)程序以及檢測(cè)和控制領(lǐng)域中。例如,在調(diào)制解調(diào)器驅(qū)動(dòng)程序中用于屏蔽某些位,實(shí)現(xiàn)奇偶校驗(yàn)等。位運(yùn)算要求參與運(yùn)算的操作數(shù)必須是整型或字符型的數(shù)據(jù),而不允許為實(shí)型或結(jié)構(gòu)體類型的數(shù)據(jù)。C語(yǔ)言提供了六種位運(yùn)算符,如表2-6所示。1.按位“與”運(yùn)算符(&)參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“與”運(yùn)算。運(yùn)算規(guī)則:0&0=0;0&1=0;1&0=0;1&1=1。即兩個(gè)相應(yīng)位同時(shí)為1,結(jié)果才為1,否則為0。例如,求3&6的值。應(yīng)先把3和6以補(bǔ)碼表示,再進(jìn)行按位“與”運(yùn)算。3=00000011(&)6=0000011000000010

3=00000011(&)6=0000011000000010知識(shí)擴(kuò)展――位運(yùn)算結(jié)果為2的補(bǔ)碼,因此,3&6的值為2。按位“與”運(yùn)算通常有兩種特殊的用途。(1)清零如果要將一個(gè)存儲(chǔ)單元清零,即使其全部二進(jìn)制位為0,只要和一個(gè)各位都為零的數(shù)相與,則其結(jié)果為零。如:知識(shí)擴(kuò)展――位運(yùn)算

3=00000011(&)0=0000000000000000(2)取一個(gè)數(shù)中指定位如果要將一個(gè)數(shù)x中的某些位保留下來(lái)(即屏蔽其他位),只要找一個(gè)新數(shù),在x想保留的那些位上,新數(shù)相應(yīng)位取值1,其他位取值0,然后將兩數(shù)進(jìn)行與運(yùn)算。例如,設(shè)x=01101101,取x的低4位。知識(shí)擴(kuò)展――位運(yùn)算X=01101101(&)0000111100001101若取x的右起(從低位起)第3,4,6位,則為: X=01101101(&)0010110000101100這種取一個(gè)數(shù)中某幾位的辦法也稱為“屏蔽法”,即用0屏蔽掉不需要的位,而用1保留需要的位,為此找的新數(shù)也稱為“屏蔽字”。知識(shí)擴(kuò)展――位運(yùn)算2.按位“或”運(yùn)算符(|)參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“或”運(yùn)算。運(yùn)算規(guī)則:0|0=0;0|1=1;1|0=1;1|1=1。即兩個(gè)相應(yīng)位只要有一個(gè)為1,結(jié)果為1,兩個(gè)相應(yīng)位全為0,結(jié)果才為0。例如,求3|6的值。知識(shí)擴(kuò)展――位運(yùn)算

3=00000011(|)6=0000011000000111知識(shí)擴(kuò)展――位運(yùn)算結(jié)果為7的補(bǔ)碼,因此,3|6的值為7。用途:通常用來(lái)將一個(gè)數(shù)據(jù)的某些特定位置1。方法:將希望置1的位與1進(jìn)行“或”運(yùn)算,保持不變的位與0進(jìn)行“或”運(yùn)算。例如,將x=01101010的低4位置1,高4位不變。知識(shí)擴(kuò)展――位運(yùn)算

X=01101010(|)0000111101101111知識(shí)擴(kuò)展――位運(yùn)算3.按位“異或”運(yùn)算符(^)參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“異或”運(yùn)算。運(yùn)算規(guī)則:0^0=0;0^1=1;1^0=1;1^1=0。即兩個(gè)相應(yīng)位的值不同,結(jié)果為1,否則為0。例如,求3^6的值。知識(shí)擴(kuò)展――位運(yùn)算結(jié)果為5的補(bǔ)碼,因此,3^6的值為5?!爱惢颉边\(yùn)算的用途如下:

3=00000011(^)6=0000011000000101知識(shí)擴(kuò)展――位運(yùn)算(1)與0相“異或”,保留原值例如,將x=00010011與0相“異或”。 x=00010011(^)0=0000000000010011知識(shí)擴(kuò)展――位運(yùn)算(2)使特定的位翻轉(zhuǎn)如果要使一個(gè)數(shù)x中某些指定位翻轉(zhuǎn),只要找一個(gè)新數(shù),在x需要翻轉(zhuǎn)的位上新數(shù)相應(yīng)位取值1,在x需要保持不變的位上新數(shù)相應(yīng)位取值0,然后將兩數(shù)進(jìn)行“異或”運(yùn)算。例如,設(shè)x=01010011,將x的低4位翻轉(zhuǎn),高4位不變。

x=00010011(^)0000111100011100知識(shí)擴(kuò)展――位運(yùn)算在交互式圖形程序設(shè)計(jì)中,常用“異或”運(yùn)算使像素翻轉(zhuǎn),而且對(duì)一個(gè)像素連續(xù)翻轉(zhuǎn)兩次即可恢復(fù)原態(tài)。因此,利用“異或”運(yùn)算可以產(chǎn)生動(dòng)畫效果知識(shí)擴(kuò)展――位運(yùn)算4.按位取反運(yùn)算符(~)參加運(yùn)算的一個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行取反運(yùn)算。運(yùn)算規(guī)則:~1=0;~0=

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論