# 231. Power of Two

## LeetCode [231. Power of Two](https://leetcode-cn.com/problems/power-of-two/)

### Description

Given an integer `n`, return *`true` if it is a power of two. Otherwise, return `false`*.

An integer `n` is a power of two, if there exists an integer `x` such that `n == 2x`.

**Example 1:**

```
Input: n = 1
Output: true
Explanation: 20 = 1
```

**Example 2:**

```
Input: n = 16
Output: true
Explanation: 24 = 16
```

**Example 3:**

```
Input: n = 3
Output: false
```

**Constraints:**

* `-2^31 <= n <= 2^31 - 1`

**Follow up:** Could you solve it without loops/recursion?

### Tags

Math, Bit Manipulation

### Solution

The **positive** number `n` is a power of 2 if and only if it meets `n&(n-1) == 0`.

### Complexity

* Time complexity: $$O(1)$$
* Space complexity: $$O(1)$$

### Code

```go
func isPowerOfTwo(n int) bool {
	return n > 0 && n&(n-1) == 0
}
```
