解答:如果一个数是2的阶次方数,那么它的二进制的首位一般是1,后面接若干个0.比如8就是1000,64就是1000000,。如果将这个数减1后,再与该数做和(&)运算,则应该全为0.(例如,8与7,一个是1000,一个是111,他们做和运算后全是0)所以((d-1)&(d))==0
class Result{
void print(int d){
if(((d-1)&(d))==0)&&(d!=0))
print("2的阶次方")
}
}
解答:如果一个数是2的阶次方数,那么它的二进制的首位一般是1,后面接若干个0.比如8就是1000,64就是1000000,。如果将这个数减1后,再与该数做和(&)运算,则应该全为0.(例如,8与7,一个是1000,一个是111,他们做和运算后全是0)所以((d-1)&(d))==0
class Result{
void print(int d){
if(((d-1)&(d))==0)&&(d!=0))
print("2的阶次方")
}
}