快捷代码判断一个整数是否是2的整数次幂。
首先,被判断的数是一个整数,所以2的负数次幂是非整数不会符合条件。
可以使用&运算,来判断,可以实现一行代码解决。
//传入一个整数n,判断n是不是2的整数次幂
if( (n & (n-1)) == 0 )
原因是二进制数的特殊性,一个2的整数次幂的数转化为二进制后,只有最高位会是一个1,其余的都是0,当这个数-1,就会导致这个数最高位变成0,而其余位变成1,刚好按位与&就完全错开,会是0
快捷代码判断一个整数是否是2的整数次幂。
首先,被判断的数是一个整数,所以2的负数次幂是非整数不会符合条件。
可以使用&运算,来判断,可以实现一行代码解决。
//传入一个整数n,判断n是不是2的整数次幂
if( (n & (n-1)) == 0 )
原因是二进制数的特殊性,一个2的整数次幂的数转化为二进制后,只有最高位会是一个1,其余的都是0,当这个数-1,就会导致这个数最高位变成0,而其余位变成1,刚好按位与&就完全错开,会是0