最直接的做法是對2不斷取餘,看餘數是否爲0,但是這樣相對來說時間複雜度較高,這裏提供一種思路:
位運算
2的整數次方,則轉換爲二進制後,每一位上只有一個1,其餘全爲0
int N;
if(((N-1)&N)==0) //則爲2的整數次方
最直接的做法是對2不斷取餘,看餘數是否爲0,但是這樣相對來說時間複雜度較高,這裏提供一種思路:
位運算
2的整數次方,則轉換爲二進制後,每一位上只有一個1,其餘全爲0
int N;
if(((N-1)&N)==0) //則爲2的整數次方