将按位if条件转换为普通if条件

Converting bitwise if condition to usual if condition

本文关键字:if 条件 转换      更新时间:2023-10-16

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

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

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

位偏移基本上是2的乘法和除法。上述条件相当于

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

可以转换为

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

逐位操作并不难学习,事实上它们比其他数据类型的操作快得多。然而,你可以使用一个函数来隐藏复杂的计算,比如:

bool Check( const Foo& foo, int pos) {
return foo & 1 << pos;
if(Check(out[currentState], j)) dosomething();