在像 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 的条目。
我正在看这个功能,
int func(int a, int b){
return (a ^ (1 << b));
}
到底发生了什么?我知道它基本上是在说“a XOR (2^b)”,也就是说,a xor 2 的 b 次方。但除此之外,实际发生了什么,为什么?我想我正在寻找这个公式中的某种模式。
此特定表达式切换 a 的第 b 位。
这可能很有用,例如,如果您想将 int
视为布尔数组(或位掩码),并取反位置 b 的条目。