题目:给出一个无符号型整数,判读其是否是2^n?
解答:2^n,在二进制上比较明显,即1左移多少位得到的,所以可以抓住这个特征,即无符号数为2^n的数要么是0,要么是100000....这种二进制结构,所以可以采用:
if((x & (x-1)) == 0)
return 1;
来判定其是否是2^n。
题目:给出一个无符号型整数,判读其是否是2^n?
解答:2^n,在二进制上比较明显,即1左移多少位得到的,所以可以抓住这个特征,即无符号数为2^n的数要么是0,要么是100000....这种二进制结构,所以可以采用:
if((x & (x-1)) == 0)
return 1;
来判定其是否是2^n。