js题

128 阅读1分钟

检查数字是否为2的幂

答案

const isNumberPowerOfTwo = number => !!number && (number & (number - 1)) == 0

// 事例
isNumberPowerOfTwo(100) // false
isNumberPowerOfTwo(128) // true

解析

  1. 2的幂的数字x如果表示为二进制肯定是1000...0
  2. x-1如果的二进制肯定是111...1
  3. 两者按位与运算结果为0
  4. 经分析只有这种情况符合