复合位与
来自Labplus盛思维基百科
- 描述
复合运算按位与运算符(&=)经常被用来将一个变量和常量进行运算使变量某些位变 为0。这通常被称为“清算”或“复位”位编程指南。
- 语法
x &= y; // 等价于 x = x & y;
- 参数
x:char,int 或long 类型变量
Y:char,int 或long 类型常量
- 例如
首先,回顾一下按位与(&)运算符 0 0 1 1 运算元1 0 1 0 1 运算元2 ---------- 0 0 0 1(运算元1&运算元2) - 返回的结果 任何位与0 进行按位与操作后被清零,如果myBite 是变量 myByte&B00000000 = 0; 因此,任何位与1 进行“按位与运算”后保持不变 myByte B11111111 = myByte;
注意:
因为我们用位操作符来操作位,所以使用二进制的变量会很方便。如果这些数值是其他值将会得到同样结果,只是不容易理解。同样,B00000000 是为了标示清楚,0 在任何进制中都是0(恩。。有些哲学的味道)因此 - 清除(置零)变量的任意位0 和1,而保持其余的位不变,可与常量B11111100 进行复合运算按位与(&=)
1 0 1 0 1 0 1 0 变量 1 1 1 1 1 1 0 0 mask ---------------------- 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 mask ---------------------- X X X X X X 0 0 变量不变位清零 同理 myByte = 10101010; myByte&= B1111100 == B10101000;