l231 power of two

题目描述

1
Given an integer, write a function to determine if it is a power of two.

解题思路

  • n=n/2,算n%2获取的商是否为1,1的话返回true,其他返回false
  • 判断其是否是2的幂,例如8对应的二进制表示为:1000,7对应的二进制表示是0111,8&7==0 所以8是2的幂

Go实现1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func isPowerOfTwo(n int) bool {
if n<=0 {
return false
}

for n%2 == 0 {
n = n/2
}

if n == 1{
return true
}else{
return false
}
}

Go实现2

1
2
3
4
5
6
7
8
9
10
func isPowerOfTwo(n int) bool {
if n<=0 {
return false
}

if n==1 {
return true
}
return n&(n-1) == 0
}