c++ - 使用布尔变量理解按位异或 (^)
问题描述
我来自游戏编程背景,我刚刚遇到了按位 XOR ^。我已经看过它如何处理整数的示例,但我对布尔值的结果有点困惑。我知道 bool 是 0 或 1,但经过测试,我无法使用简单的运算符复制 ^ 结果。有人可以向我解释以下代码片段(特别是 ^)在做什么吗?非常感谢。
bool body1awake = rigidbody1.isAwake;
bool body2awake = rigidbody2.isAwake;
if (body1awake ^ body2awake)
{
if (body1awake) rigidbody2.SetAwake();
else rigidbody1.SetAwake();
}
解决方案
当仅设置其中一位时,两位的异或为真。如果两者都设置或未设置,那么它是错误的。因为bool
基本上代表一个位(0或1是它的唯一值)
if (body1awake ^ body2awake)
表示条件在 when 上为真body1awake != body2awake
。
推荐阅读
- ios - 在这种情况下如何设置 groundAnchor 以获得准确的位置。斯威夫特5
- javascript - How can I print data from database in flask app using javascript and react components?
- amazon-web-services - 带有托管 ui 和邮递员的 Amazon cognito 身份验证流程
- html - HTML divTable divTableCell 侧边框未显示
- json - 如何将 JSON 中的引用键反序列化为 Rust 中的结构?
- php - 问题统计laravel 8中每个帖子的评论数
- mysql - 如何使用插入触发器后更新表字段?
- spring-boot - 如何在 Spring Boot 管理墙板上显示注销的应用程序
- django - 我可以在 django html 中添加表单吗?
- vaadin - 使用@UIScope 导航回视图时,Vaadin 19.0.6 网格项详细信息卡住