用一个表达式而不是一个循环语句 判断一个数X是否是2的N次方(2,4,8,16......)

时间:2021-08-26 22:36:03

 可以发现:2,4,8,16.......的二进制分别为10,100,1000,10000.....

所以如果X减1后与X做按位与运算的结果为0,或者如果X减1后与X做按位或运算的结果为1,那么X是2的N次方。