将 if 条件按位转换为通常的 if 条件

Converting bitwise if condition to usual if condition

我发现这个 if 条件是按位使用的,我不知道如何将它转换为使用普通逻辑运算符。

if (out[currentState] & (1 << j))

如何提供不使用按位的等效条件?

按位运算并不难学,实际上它们比其他数据类型运算要快得多。但是,您可以使用函数来隐藏复杂的计算,如下所示:

 bool Check( const Foo& foo, int pos) {
     return foo & 1 << pos;

if(Check(out[currentState], j)) dosomething();

位移位基本上就是乘除2,上面的条件等价于

if ((out[currentState] >> j) & 1)

可以转换为

if ((int)(out[currentState] / pow(2, j)) % 2)