判断一个数是不是2的n次方

判断一个数是不是2的n次方

问题

给定一个整数,编写一个函数来确定它是否是2的幂。

示例 1:

Input: 1
Output: true 
Explanation: 20 = 1

示例 2:

Input: 16
Output: true
Explanation: 24 = 16

示例 3:

Input: 218
Output: false

代码

二进制表示只有一个 1 存在。

public boolean isPowerOfTwo(int n) {
    return n > 0 && Integer.bitCount(n) == 1;
}

利用 1000 & 0111 == 0 这种性质,得到以下解法:

public boolean isPowerOfTwo(int n) {
    return n > 0 && (n & (n - 1)) == 0;
}

 上一篇
求一个数的补码 求一个数的补码
求一个数的补码问题 给定一个正整数,输出其补数。补码策略是将二进制表示的位翻转。 注意: 给定的整数保证在32位有符号整数的范围内。 你可以假设在整数的二进制表示中没有前导零比特。 示例 1: Input: 5 Output: 2 Ex
2019-01-05
下一篇 
判断一个数是不是4的n次方 判断一个数是不是4的n次方
判断一个数是不是4的n次方问题 给定一个整数(有符号32位),编写一个函数来检查它是否是4的幂。 示例 1: Input: 16 Output: true 示例 2: Input: 5 Output: false 代码 这种数在二进制表示中
2019-01-05
  目录