複合位元AND運算 (&=)

描述

複合位元運算 AND 運算子 (&=) 常用在配合常數變換變數內特定的位元成 LOW 狀態(變成 0),在程式撰寫上又稱為 ”清除” 或者 ”重置”。

語法


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

參數

x: 一個字元/整數/長整數型別變數
y: 一個字元/整數/長整數型別常數

範例

首先,複習位元運算 AND(&) 運算子

         0 0 1 1    運算元1
         0 1 0 1    運算元2
         ———-
         0 0 0 1    (運算元1 & 運算元2)    –    回傳結果

令 myByte 為 Byte 型態的變數,當 myByte 內位元與常數 0 做 AND 運算後將被清為 0:

myByte & B00000000 = 0;

如果位元是與常數 1 則維持原數據:

myByte & B11111111 = myByte;

註:由於我們是用位元運算子去處理多個位元,因此用二進制表示比較方便,轉換成其他表示法的話,數值仍舊相同;B00000000也就是十進制 0 的意思。

若我們想清除變數內位元 0 以及位元 1 的值但其他位置的值不改變的話,我們可以將變數與常數 B11111100 做 AND 運算。


         1 0 1 0 1 0 1 0    變數
         1 1 1 1 1 1 0 0    常數遮罩
         ----------------------
         1 0 1 0 1 0 0 0
  未改變的位元
                     被清除的位元

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


         x x x x x x x x    變數
         1 1 1 1 1 1 0 0    常數遮罩
         ----------------------
         x x x x x x 0 0
  未改變的位元
                     被清除的位元

因此,若 x 為:

myByte = 10101010;
myByte &= B1111100 == B10101000;

See also

|= (compound bitwise or)
& (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.