一行java代码判断一个数 是否为2的整次幂?
int value =1024;
就是这一行:
System.out.println((value & value - 1)==0 ? true:false);
算法思想:
2的整数次幂的数为value:
那value 满足这样一个特征:
value转换为二进制,最高位为1低位全为0 ;
而(value-1)也转换为二进制 补全到和value 对应二进制数一样的长度,满足的特征为:最高位为0其他低位为1;
value & (value - 1)结果为0;
不定期更新