给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

    1. 输入: 1
    2. 输出: true
    3. 解释: 2^0 = 1
    1. /**
    2. * 右位移,除 2
    3. */
    4. var isPowerOfTwo = function (n) {
    5. if (n < 1) return false
    6. while (n % 2 === 0) {
    7. n = n >> 1
    8. }
    9. return n === 1
    10. }
    1. /**
    2. * 被 2 整除的数二进制里只有一个 1
    3. * n & (n - 1) 去掉最低位 1
    4. * 为 2 的幂,结果为 0
    5. */
    6. var isPowerOfTwo = function (n) {
    7. if (n < 1) return false
    8. return (n & (n - 1)) === 0
    9. }
    1. /**
    2. * 被 2 整除的数二进制里只有一个 1
    3. * n & (-n) 保留了最右边的 1
    4. * 若相等,n 为 2 的幂
    5. */
    6. var isPowerOfTwo = function (n) {
    7. if (n < 1) return false
    8. return (n & (-n)) === n
    9. }