首页 > 解决方案 > 使用布尔变量理解按位异或 (^)

问题描述

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

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

标签: c++booleanbitwise-operatorsboolean-operationsbitwise-xor

解决方案


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

if (body1awake ^ body2awake)

表示条件在 when 上为真body1awake != body2awake


推荐阅读