## 题目

> - 题号：231
> - 难度：简单
> - https://leetcode-cn.com/problems/power-of-two/

给定一个整数，编写一个函数来判断它是否是 2 的幂次方。

<b>示例 1</b>:
```c
输入: 1
输出: true
解释: 2^0 = 1
```

<b>示例 2</b>:
```c
输入: 16
输出: true
解释: 2^4 = 16
```

<b>示例 3</b>:
```c
输入: 218
输出: false
```

---
## 实现

**第一种：利用位运算的方法**

**思路：** 利用"异或"操作的性质。

```c
A: 00 00 11 00

A^A: 00 00 00 00
```

**C# 语言**

- 状态：通过
- 1108 / 1108 个通过测试用例
- 执行用时: 36 ms, 在所有 C# 提交中击败了 100.00% 的用户
- 内存消耗: 14.7 MB, 在所有 C# 提交中击败了 100.00% 的用户

```c
public class Solution
{
    public bool IsPowerOfTwo(int n)
    {
        if (n < 0)
            return false;
        for (int i = 0; i < 32; i++)
        {
            int mask = 1 << i;
            if ((n ^ mask) == 0)
                return true;
        }
        return false;
    }
}
```

**Python 语言**

- 执行结果：通过
- 执行用时：44 ms, 在所有 Python3 提交中击败了 51.91% 的用户
- 内存消耗：13.6 MB, 在所有 Python3 提交中击败了 6.25% 的用户

```python
class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        for i in range(32):
            mask = 1 << i
            if n ^ mask == 0:
                return True
        return False
```

