当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Arduino &=用法及代码示例


[复合运算符]

说明

复合位与运算符&= 通常与变量和常量一起使用,以强制变量中的特定位为低状态(为 0)。这在编程指南中通常称为"clearing" 或"resetting" 位。

Bitwise AND & 运算符的回顾:

0  0  1  1    operand1
0  1  0  1    operand2
----------
0  0  0  1    (operand1 & operand2) - returned result

用法

x &= y; // equivalent to x = x & y;

参数

x: 多变的。允许的数据类型:char,int,long.
y: 变量或常量。允许的数据类型:char,int,long.

示例代码

"bitwise ANDed" 为 0 的位被清除为 0,因此,如果 myByte 是字节变量,

myByte & 0b00000000 = 0;

"bitwise ANDed" 为 1 的位保持不变,因此,

myByte & 0b11111111 = myByte;

注意事项和警告

因为我们在按位运算符中处理位 - 使用带有常量的二进制格式化程序很方便。这些数字在其他表示中仍然是相同的值,只是不太容易理解。此外,为清楚起见,显示了 0b00000000,但任何数字格式的零都是零(嗯,那里有什么哲学吗?)

因此 - 要清除(设置为零)变量的位 0 和 1,同时保持变量的其余部分不变,请使用复合位与运算符 (&=) 和常量 0b11111100

1  0  1  0  1  0  1  0    variable
1  1  1  1  1  1  0  0    mask
----------------------
1  0  1  0  1  0  0  0
bits unchanged
                 bits cleared

这是用符号 x 替换变量位的相同表示

x  x  x  x  x  x  x  x    variable
1  1  1  1  1  1  0  0    mask
----------------------
x  x  x  x  x  x  0  0
bits unchanged
                 bits cleared

因此,如果:

myByte = 0b10101010;
myByte &= 0b11111100;  // results in 0b10101000

相关用法


注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 &=。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。