複合位元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.