用户工具

站点工具


reference:language:bitwisecompoundand

compound bitwise AND (&=)

描述

符合运算按位与运算符(&=)经常被用来将一个变量和常量进行运算使变量某些位变为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;
reference/language/bitwisecompoundand.txt · 最后更改: 2017/04/07 10:03 (外部编辑)