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

What does (a ^ (1 << b)) actually do, in a language like C++?

我正在看这个功能,

int func(int a, int b){
    return (a ^ (1 << b)); 
}

到底发生了什么?我知道它基本上是在说“a XOR (2^b)”,也就是说,a xor 2 的 b 次方。但除此之外,实际发生了什么,为什么?我想我正在寻找这个公式中的某种模式。

此特定表达式切换 a 的第 b 位。

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