求助
if (num & num - 1){
printf("参数队伍的数量必须是2的N次方!\n");
return -1;
}
8 的二进制形式是:1000
16 的二进制形式是:10000
32 的二进制形式是:100000
64 的二进制形式是:1000000
128 的二进制形式是:10000000
可以发现:无一例外,只要是 2 的 N 次方,表示为二进制,必须是 1 + N 个 0 的形式。
所以也必须满足 num & num - 1 == 0 的条件!(比如 7 的二进制是 111,8 & 7 == 1000 & 111 == 0)
这个是什么原理,我怎么看不懂{:10_247:} {:10_244:} 都是二进制
1000-1=111
1000 & 111=0 wp231957 发表于 2022-9-9 15:11
都是二进制
1000-1=111
1000 & 111=0
& 在这里起什么作用?
我就只知道可以拿来取地址 gandixiwang 发表于 2022-9-9 15:22
& 在这里起什么作用?
我就只知道可以拿来取地址
与运算,按位与
&& 逻辑与
& 按位与
gandixiwang 发表于 2022-9-9 15:22
& 在这里起什么作用?
我就只知道可以拿来取地址
百度一下位运算
页:
[1]