#12320. 判断一个数是否是 2 的幂

判断一个数是否是 2 的幂

判断一个数是否是 2 的幂

题目描述

给定一个整数 n,判断它是否是 ​2 的幂​。

  • 2 的幂的定义:存在一个整数 k ≥ 0,使得 n=2kn = 2^k
  • 例如:
    • 1 = 2^0
    • 2 = 2^1
    • 4 = 2^2
    • 8 = 2^3 都是 2 的幂。

输入格式

输入一个整数 n


输出格式

如果 n 是 2 的幂,输出 YES;否则输出 NO


数据范围

  • 0 ≤ n ≤ 10^9

输入输出样例

输入 1

16

输出 1

YES

输入 2

12

输出 2

NO

思路提示

  • 2 的幂在二进制表示中有且只有 ​一位是 1​,其余都是 0。

  • 例如:

    • 1 (0001)
    • 2 (0010)
    • 4 (0100)
    • 8 (1000)
  • 位运算判断公式:

    n > 0 && (n & (n - 1)) == 0
    
    • (n & (n - 1)) 会将二进制表示中最低位的 1 清除;
    • 如果结果为 0,说明原数只有一个 1,即是 2 的幂。