复合位与

来自Labplus盛思维基百科
Tangliufeng讨论 | 贡献2018年3月29日 (四) 12:06的版本 (创建页面,内容为“*'''<big>描述</big>''' 复合运算按位与运算符(&=)经常被用来将一个变量和常量进行运算使变量某些位变 为0。这通常被称为…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
  • 描述

复合运算按位与运算符(&=)经常被用来将一个变量和常量进行运算使变量某些位变 为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;