複合位元OR運算 (|=)

描述

複合位元運算 OR 運算子 (|=) 常用在配合常數 ”設置” 變數內特定的位元至 1。

語法


x |= y; // 等同於 x = x | y;

參數

x: 字元,整數或長整數型別變數。
y: 字元,整數或長整數型別變數。

範例

首先,複習位元運算子 OR(|)

         0 0 1 1    運算子1
         0 1 0 1    運算子2
         ———-
         0 1 1 1    (運算子1 | 運算子2)    –    回傳結果

被常數 0 所 OR 的位元將維持原本的值,設 myByte 是個 byte 型別的變數,

myByte | B00000000 = myByte;

被常數 1 所 OR 的位元將被設置為 1:

myByte | B11111111 = B11111111;

若要將變數位元 0 以及位元 1 的值設置為 1 但保持其他位元的值不變。可將變數與常數 B00000011 做 OR 運算。


         1 0 1 0 1 0 1 0    變數
         0 0 0 0 0 0 1 1    常數遮罩
         ----------------------
         1 0 1 0 1 0 1 1
  未改變的位元
                     被設置的位元

這是一個相同的表示法,只是將變數的位元替換成代號 x


         x x x x x x x x    變數
         0 0 0 0 0 0 1 1    常數遮罩
         ----------------------
         x x x x x x 1 1
  未改變的位元
                     被設置的位元

因此,若 x 為:

myByte = B10101010;
myByte |= B00000011 == B10101011;

See also

&= (compound bitwise and)
& (bitwise AND)
| (bitwise OR)


語法參考主頁面

本頁由熱血青年 LBU 譯自英文版。

The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.