C++ &-按位与

示例

int a = 6;     // 0110b(0x06)
int b = 10;    // 1010b(0x0A)
int c = a & b; // 0010b(0x02)

std::cout << "a = " << a << ", b = " << b << ", c = " << c << std::endl;

输出结果

a = 6, b = 10, c = 2

为什么

按位AND操作在位级别上使用以下布尔真值表:

TRUE  AND TRUE  = TRUE
TRUE  AND FALSE = FALSE
FALSE AND FALSE = FALSE

当二进制值a(0110)和二进制值b(1010)是AND“编在一起,我们得到的二进制值0010:

int a = 0 1 1 0
int b = 1 0 1 0 &
        ---------
int c = 0 0 1 0

逐位AND不会更改原始值的值,除非专门指定使用逐位赋值复合运算符&=:

int a = 5;  // 0101b(0x05)
a &= 10;    // a = 0101b & 1010b