判断一个数是否是2的整数次幂
如果一个数是2的整数次幂
那么转换成二进制就是10,10,1000,10000这样的形式
然后该数减去1,就是1,11,111,111这样的形式
所以判断方式就是 a&(a-1)==0, 写的漂亮一点 return !a&(a-1);
最近又看了些位运算的视频,这里补充一下
(1<<30)%n==0. 首先找到最大范围的数,然后对n取余
或者可以直接写成。x&-x=x。
x&-x是找右边第一个为1的数,如是开头等于1、那么就和原数相等,并且是2的倍数
判断一个数是否是2的整数次幂
如果一个数是2的整数次幂
那么转换成二进制就是10,10,1000,10000这样的形式
然后该数减去1,就是1,11,111,111这样的形式
所以判断方式就是 a&(a-1)==0, 写的漂亮一点 return !a&(a-1);
最近又看了些位运算的视频,这里补充一下
(1<<30)%n==0. 首先找到最大范围的数,然后对n取余
或者可以直接写成。x&-x=x。
x&-x是找右边第一个为1的数,如是开头等于1、那么就和原数相等,并且是2的倍数