if (counter & (1<<j)) .what does this statement mean and how it works?
本问题已经有最佳答案,请猛点这里访问。
我正在研究一种子序列的算法。请告诉我这句话的意思。程序如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | void printSubsequences(int arr[], int n) { unsigned int opsize = pow(2, n); for (int counter = 1; counter < opsize; counter++) { for (int j = 0; j < n; j++) { if (counter & (1<<j)) cout << arr[j] <<""; } cout << endl; } } |
声明:
1 | if (counter & (1<<j)) |
检查是否设置了
考虑下面的例子。如果
1 | 101000000 |
与位与运算符
1 2 3 4 | 101000000 & 001000000 --------- 001000000 |
值
1 | if ( 64 ) |
是满意的。在C的语义(不具有本机布尔数据类型)中,当使用