解答:如果一個數是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的階次方")
}
}