c++ - 了解 boolean 变量的按位异或 (^)

标签 c++ boolean bitwise-operators boolean-operations bitwise-xor

我有游戏编程背景,我刚刚遇到了按位异或 ^。我已经看过它如何处理整数的示例,但我对 boolean 值的结果有点困惑。我知道 bool 要么是 0,要么是 1,但是经过测试,我无法用简单的运算符复制 ^ 结果。有人可以向我解释一下下面的代码片段(特别是^)在做什么吗?非常感谢。

bool body1awake = rigidbody1.isAwake;
bool body2awake = rigidbody2.isAwake;
if (body1awake ^ body2awake)
{
    if (body1awake) rigidbody2.SetAwake();
    else rigidbody1.SetAwake();
}

最佳答案

当仅设置其中一位时,两位异或为真。如果两者都设置或未设置则为 false。因为 bool 基本上代表一个位(0 或 1 是它唯一的值)

if (body1awake ^ body2awake)

表示当 body1awake != body2awake 时条件为 true。

关于c++ - 了解 boolean 变量的按位异或 (^),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60117888/

相关文章:

java - 是否可以将 IndexOutofBounds 捕获为 boolean 值?

c++ - 测试给定数字是否为整数

xml - 如何创建 boolean 值?

c++ - 运算符重载问题

c# - if 语句中的空条件 boolean 值

c - 获取数组中每个 int 的 LSB 并将它们组合起来创建一个字节

java - 语法/运算符 Java - 这行是什么意思?

javascript - 为什么 JavaScript 会出现按位运算的奇怪行为?

c++ - 理解 C++ 算法二进制搜索背后的工作原理的问题

c++ - pybind11 用于 C++14/C++17