第八課運算符和表達式(位運算符)

第八課運算符和表達式(位運算符)

ID:9096441

大小:65.50 KB

頁數(shù):6頁

時間:2018-04-17

第八課運算符和表達式(位運算符)_第1頁
第八課運算符和表達式(位運算符)_第2頁
第八課運算符和表達式(位運算符)_第3頁
第八課運算符和表達式(位運算符)_第4頁
第八課運算符和表達式(位運算符)_第5頁
資源描述:

《第八課運算符和表達式(位運算符)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、第八課運算符和表達式(位運算符)作者:佚名???來源:本站原創(chuàng)???點擊數(shù):13115??更新時間:2007年07月17日??【字體:大中小】 學(xué)過匯編的朋友都知道匯編對位的處理能力是很強的,但是單片機C語言也能對運算對象進行按位操作,從而使單片機C語言也能具有一定的對硬件直接進行操作的能力。位運算符的作用是按位對變量進行運算,但是并不改變參與運算的變量的值。如果要求按位改變變量的值,則要利用相應(yīng)的賦值運算。還有就是位運算符是不能用來對浮點型數(shù)據(jù)進行操作的。單片機c語言中共有6種位運算符。位運算一般的表達形式

2、如下:變量1?位運算符?變量2位運算符也有優(yōu)先級,從高到低依次是:“~”(按位取反)→“<<”(左移)?→“>>”(右移)?→“&”(按位與)→“^”(按位異或)→“

3、”(按位或)表8-1是位邏輯運算符的真值表,X表示變量1,Y表示變量2XY~X~YX&YX

4、YX^Y0011000011001110010111100110表8-1???按位取反,與,或和異或的邏輯真值表利用以前建立起來的實驗板,我們來做個實驗驗證一下位運算是否真是不改變參與變量的值,同時學(xué)習(xí)位運算的表達形式。程序很簡單,用P1口做運算變量,P

5、1.0-P1.7對應(yīng)P1變量的最低位到最高位,通過連接在P1口上的LED我們便能直觀看到每個位運算后變量是否有改變或如何改變。程序如下:#include?void?main(void){unsigned?int?a;unsigned?int?b;unsigned?char?temp;?//臨時變量P1?=?0xAA;?//點亮D1,D3,D5,D7?P1口的二進制為10101010,為0時點亮LEDfor?(a=0;a<1000;a++)for?(b=0;b<1000;b++);?//延

6、時temp=P1&0x7;//單純的寫P1

7、0x7是沒有意義的,因為沒有變量被影響,不會被編譯//執(zhí)行P1|0x7后結(jié)果存入temp,這個時候改變的是temp,但P1不會被影響。//這個時候LED沒有變化,仍然是D1,D3,D5,D7亮for?(a=0;a<1000;a++)for?(b=0;b<1000;b++);?//延時P1?=?0xFF;?//熄滅LEDfor?(a=0;a<1000;a++)for?(b=0;b<1000;b++);?//延時P1?=?0xAA;?//點亮D1,D3,D5,D7?P1

8、口的二進制為10101010,為0時點亮LEDfor?(a=0;a<1000;a++)for?(b=0;b<1000;b++);?//延時P1?=?P1?&?0x7;?//這個時候LED會變得只有D2滅//因為之前P1=0xAA=10101010//與0x7位與????0x7=00000111//結(jié)果存入P1????P1=00000010?//位為O時點亮LED,電路看第三課for?(a=0;a<1000;a++)for?(b=0;b<1000;b++);?//延時P1?=?0xFF;?//熄滅LEDwhil

9、e(1);//大家能根據(jù)上面的程序去做位或,左移,取反等等。}復(fù)合賦值運算符復(fù)合賦值運算符就是在賦值運算符“=”的前面加上其他運算符。以下是C語言中的復(fù)合賦值運算符:+=加法賦值>>=右移位賦值-=減法賦值&=邏輯與賦值*=乘法賦值

10、=邏輯或賦值/=除法賦值^=邏輯異或賦值%=???取模賦值??????-=???邏輯非賦值<<=?左移位賦值復(fù)合運算的一般形式為:變量???復(fù)合賦值運算符???表達式其含義就是變量與表達式先進行運算符所要求的運算,再把運算結(jié)果賦值給參與運算的變量。其實這是C語言中一種簡化程序的一

11、種方法,凡是二目運算都能用復(fù)合賦值運算符去簡化表達。例如:a+=56等價于a=a+56y/=x+9?等價于?y=y/(x+9)很明顯采用復(fù)合賦值運算符會降低程序的可讀性,但這樣卻能使程序代碼簡單化,并能提高編譯的效率。對于開始學(xué)習(xí)C語言的朋友在編程時最好還是根據(jù)自己的理解力和習(xí)慣去使用程序表達的方式,不要一味追求程序代碼的短小。逗號運算符如果你有編程的經(jīng)驗,那么對逗號的作用也不會陌生了。如在VB中“Dima,b,c”的逗號就是把多個變量定義為同一類型的變量,在C也一樣,如“inta,b,c”,這些例子說明逗號

12、用于分隔表達式用。但在C語言中逗號還是一種特殊的運算符,也就是逗號運算符,能用它將兩個或多個表達式連接起來,形成逗號表達式。逗號表達式的一般形式為:表達式1,表達式2,表達式3……表達式n這樣用逗號運算符組成的表達式在程序運行時,是從左到右計算出各個表達式的值,而整個用逗號運算符組成的表達式的值等于最右邊表達式的值,就是“表達式n”的值。在實際的應(yīng)用中,大部分情況下,使用逗號表達式的目的只是為了分別

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。