谁能简化这个按位表达式吗?

问题描述 投票:0回答:2

正在用 C++ 进行 ECS 实现,我很想可以简化这个表达式,但说实话,我对按位运算没有足够的信心来弄清楚:

(x & y) == x

如果您有任何关于简化按位表达式的技巧,那就太好了,谢谢

编辑:格式化

c++ bit-manipulation bitwise-operators
2个回答
1
投票

我觉得不可以,

expr = x & y;

给出 2 个值的公共位。

expr == x

测试公共位是否恰好覆盖 x。


0
投票

!(x & ~y)
会给你同样的结果。但是,如果您有一个不错的 C++ 编译器,请考虑不要在此类东西上浪费时间。无论如何,编译器都会找出最有效的机器代码。可读的代码应该是主要目标。

举个例子,在这里 [1] 你可以实时看到,一个众所周知的编译器(在本例中为 clang)会将

(x & y) == x
!(x & ~y)
编译成相同的代码。

[1] https://godbolt.org/z/vf83Ef1ov

© www.soinside.com 2019 - 2024. All rights reserved.