if (k & (1 << p))是什么意思,什么情况下执行if的循环
if是条件分支,哪里有循环
&是与,位运算符
<<是左移位,也是位运算符
这不过是个数学运算,哪里复杂
-=-=-=
1<<p,1左移P位,即一个二进制数,只有从右往左数第P个位置是1,其余都是0
用k与它,就是用来将k的第P位取出来,其它位都跟0与没了
最后if(x),当x==0时为false,不为0时为true
所以最后就是k的第P位如果是1就进入选择,为0就跳过
这个是为一运算符
就是说我们要先把1看成二进制
0000 0000 0000 0000 0000 0000 0000 0001
p等于几,我们往左移动几位
但是我们通过观察就可以知道,无论左移几位,他都是2的多少次方,肯定是大于0,大于0都为1;
只要看我们的k
k只要不等于0,我们就执行