新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機c語言教程:運算符和表達式(位運算符)

        單片機c語言教程:運算符和表達式(位運算符)

        作者: 時間:2012-09-12 來源:網絡 收藏

        學過匯編的朋友都知道匯編對位的處理能力是很強的,但是C也能對對象進行按位操作,從而使C也能具有一定的對硬件直接進行操作的能力。位符的作用是按位對變量進行,但是并不改變參與運算的變量的值。如果要求按位改變變量的值,則要利用相應的賦值運算。還有就是位運算符是不能用來對浮點型數據進行操作的。c中共有6種位運算符。位運算一般的表達形式如下:

        本文引用地址:http://www.104case.com/article/170886.htm

        變量 1 位運算符 變量 2 位運算符也有優先級,從高到低依次是:“~”(按位取反)→“”(左移) →“>>”(右

        移) →“”(按位與)→“^”(按位異或)→“|”(按位或)

        表 8-1 是位邏輯運算符的真值表,X 表示變量 1,Y 表示變量 2

        X

        Y

        ~X

        ~Y

        XY

        X|Y

        X^Y

        0

        0

        1

        1

        0

        0

        0

        0

        1

        1

        0

        0

        1

        1

        1

        0

        0

        1

        0

        1

        1

        1

        1

        0

        0

        1

        1

        0

        表 8-1 按位取反,與,或和異或的邏輯真值表

        利用以前建立起來的實驗板,我們來做個實驗驗證一下位運算是否真是不改變參與變量 的值,同時學習位運算的表達形式。程序很簡單,用 P1 口做運算變量,P1.0-P1.7 對應 P1 變量的最低位到最高位,通過連接在 P1 口上的 LED 我們便能直觀看到每個位運算后變量 是否有改變或如何改變。程序如下:

        #include at89x51.h>

        void main(void)

        {

        unsigned int a;

        unsigned int b;

        unsigned char temp; //臨時變量

        P1 = 0xAA; //點亮 D1,D3,D5,D7 P1 口的二進制為 10101010,為 0 時點亮 LED

        for (a=0;a1000;a++)

        for (b=0;b1000;b++); //延時

        temp = P1 0x7; //單純的寫 P1|0x7 是沒有意義的,因為沒有變量被影響,不會被編譯

        //執行 P1|0x7 后結果存入temp,這個時候改變的是 temp,但 P1 不會被影響。

        //這個時候 LED 沒有變化,仍然是 D1,D3,D5,D7 亮

        for (a=0;a1000;a++)

        for (b=0;b1000;b++); //延時 P1 = 0xFF; //熄滅 LED

        for (a=0;a1000;a++)

        for (b=0;b1000;b++); //延時

        P1 = 0xAA; //點亮 D1,D3,D5,D7 P1 口的二進制為 10101010,為 0 時點亮 LED

        for (a=0;a1000;a++)

        for (b=0;b1000;b++); //延時

        c語言相關文章:c語言教程



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 河源市| 克什克腾旗| 晋城| 乐亭县| 寻乌县| 隆化县| 稷山县| 西青区| 顺昌县| 青河县| 灌南县| 广水市| 旬阳县| 嘉义市| 阿巴嘎旗| 新密市| 莱阳市| 隆安县| 永泰县| 惠安县| 哈尔滨市| 四子王旗| 伊春市| 察哈| 德江县| 宁国市| 抚宁县| 石门县| 泰兴市| 康马县| 萍乡市| 东乡族自治县| 从化市| 紫云| 樟树市| 重庆市| 扎赉特旗| 广饶县| 临桂县| 璧山县| 宕昌县|