个人网站制作教程,注册城乡规划师考试题型,如何建设景区旅游网站,wordpress gii插件给你一个整数 n#xff0c;请你判断该整数是否是 2 的幂次方。如果是#xff0c;返回 true #xff1b;否则#xff0c;返回 false 。
如果存在一个整数 x 使得 n 2x #xff0c;则认为 n 是 2 的幂次方。 示例 1#xff1a;
输入#xff1a;n 1
输出#xff1a;tr…给你一个整数 n请你判断该整数是否是 2 的幂次方。如果是返回 true 否则返回 false 。
如果存在一个整数 x 使得 n 2x 则认为 n 是 2 的幂次方。 示例 1
输入n 1
输出true
解释20 1示例 2
输入n 16
输出true
解释24 16示例 3
输入n 3
输出false提示
-231 n 231 - 1
class Solution {
public:bool isPowerOfTwo(int n) {return n 0 (n (n - 1)) 0;
}
}; 这里的 是按位与bitwise AND运算符 运算符会在两个数的二进制表示中逐位进行比较只有当对应位都是 1 时结果位才是 1否则结果位是 0。
如果 n 是 2 的幂次方它的二进制表示中只有 1 个 1并且这个 1 是在某个固定位置其余所有位都是 0。例如 1 的二进制表示00012 的二进制表示00104 的二进制表示01008 的二进制表示1000n - 1 会将原来唯一的 1 变为 0并且把它右边的所有位都变为 1。例如 对于 n 81000n - 1 70111对于 n 40100n - 1 30011对于 n 20010n - 1 10001
当 n 是 2 的幂次方时n 和 n - 1 在二进制表示中没有任何相同的 1 位所以 n (n - 1) 结果为 0。