将 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)
我发现这个 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)