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