Given an integer, write a function to determine if it is a power of two.
給予一正整數,寫一函式判斷它是否為二的冪次方。
1 = 1
、2 = 10
、4 = 100
、8 = 1000
…1
,其餘為零。& 1
去得到最低位元;利用>> 1
捨棄最低位元。flag
去紀錄是否出現過1
:
1
,判斷是否為最高位元了。flag
。1
這件事情:n & (n - 1)
1
的時候遇到減1
,必定會需要連環借位,因而導致整組數字0
1
相反。bool
除了0
為false
其餘皆為true
,因此只須回傳n & (n - 1)
和n > 0
即可。LeetCode
C++