在像C++这样的语言中,(a ^(1 << b))实际上做了什么?

Som*_*Guy -5 c c++ java bit-manipulation bitwise-operators

我正在看这个功能,

int func(int a, int b){
    return (a ^ (1 << b)); 
}
Run Code Online (Sandbox Code Playgroud)

究竟发生了什么?据我所知,它基本上是说"XOR(2 ^ b)",也就是说,是b的幂的xor 2.但除此之外,实际发生了什么,为什么?我想我正在寻找这个公式中的某种模式.

Thi*_*ilo 5

这个特定的表达式切换a的第b位.

这可能很有用,例如,如果您希望将您int视为布尔数组(或位掩码),并取消位置b处的条目.

  • ......对于某些天才的定义......正如你所说的,它实际上是"基本的位操作". (5认同)