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