给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
输入: 1输出: true解释: 2^0 = 1
/*** 右位移,除 2*/var isPowerOfTwo = function (n) {if (n < 1) return falsewhile (n % 2 === 0) {n = n >> 1}return n === 1}
/*** 被 2 整除的数二进制里只有一个 1* n & (n - 1) 去掉最低位 1* 为 2 的幂,结果为 0*/var isPowerOfTwo = function (n) {if (n < 1) return falsereturn (n & (n - 1)) === 0}
/*** 被 2 整除的数二进制里只有一个 1* n & (-n) 保留了最右边的 1* 若相等,n 为 2 的幂*/var isPowerOfTwo = function (n) {if (n < 1) return falsereturn (n & (-n)) === n}
