正在用 C++ 进行 ECS 实现,我很想可以简化这个表达式,但说实话,我对按位运算没有足够的信心来弄清楚:
(x & y) == x
如果您有任何关于简化按位表达式的技巧,那就太好了,谢谢
编辑:格式化
我觉得不可以,
expr = x & y;
给出 2 个值的公共位。
expr == x
测试公共位是否恰好覆盖 x。
!(x & ~y)
会给你同样的结果。但是,如果您有一个不错的 C++ 编译器,请考虑不要在此类东西上浪费时间。无论如何,编译器都会找出最有效的机器代码。可读的代码应该是主要目标。
举个例子,在这里 [1] 你可以实时看到,一个众所周知的编译器(在本例中为 clang)会将
(x & y) == x
和 !(x & ~y)
编译成相同的代码。