資源描述:
《第八課運算符和表達式(位運算符)》由會員上傳分享,免費在線閱讀,更多相關(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)用中,大部分情況下,使用逗號表達式的目的只是為了分別