Skip to content

Latest commit

 

History

History
44 lines (33 loc) · 1.05 KB

#70-Math.clz32的Polyfill.md

File metadata and controls

44 lines (33 loc) · 1.05 KB

题目描述:

ES6 新增了 Math.clz32 方法,可以让我们获取到一个整数的无符号 32 位的二进制形式有多少位前置的 0。例如:

// 1 的 32 位二进制表示:0b00000000000000000000000000000001
// 有 31 位前置的 0
Math.clz32(1) // => 31

请你完成 clz32 来达到和 Math.clz32 的同样的功能。如果输入的是能够转换成数字的,先转换成数字再进行计算:

Math.clz32('2') // => 30

如果不能转换成数字的,返回 32

Math.clz32('good') // => 32

总而言之,你的函数的返回结果要和 Math.clz32 保持一致。


思路: 首先如何得到一个整数的32位的二进制形式 一个整数如何转化成二进制形式。num.toString(2)


参考答案:

const clz32 = (num) => {
  let v = num >>> 0 
  // 会将num 转化成32的整数
  // >>> 0 没有位被移位
  // 结果将被转换成数字
  return v ? 32 - v.toString(2).length : 32
}