LeetCode_231_2的幂
廖家龙 用心听,不照做
1
2
3
4
5
6
7
8
9
10
11
12
13
位运算符:

&:与,两位都为1,那么结果为1

|:或,有一位为1,那么结果为1

~:非,~0 = 1, ~1 = 0

^:异或,两位不相同,结果为1

<<:左移,各二进位全部左移若干位,高位丢弃,低位补0

>>:右移,各二进位全部右移若干位,对无符号数,高位补0;有符号数,各编译器处理方法不一样,有的补符号位,有的补0

题目描述:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

示例:

输入:n = 1
输出:true
解释:20 = 1

输入:n = 16
输出:true
解释:24 = 16

输入:n = 3
输出:false

输入:n = 4
输出:true

输入:n = 5
输出:false

提示:-2^31 <= n <= 2^31 - 1

解法1:位运算

1
2
3
4
5
6
7
class Solution {
public:
bool isPowerOfTwo(int n) {

return (n > 0 && (n & (n - 1)) == 0);
}
};