下面的表达式是否有更快的替代方法:
Math.pow(2,Math.floor(Math.log(x)/Math.log(2)))
也就是说,取最接近(较小)的 2 的整数次幂?我在内循环中有这样的表达。我怀疑它可能会快得多,考虑到可以只从 double 的 IEEE 754 表示中获取尾数。
最佳答案
利用 ES6 的 Math.clz32(n)计算 32 位整数的前导零:
// Compute nearest lower power of 2 for n in [1, 2**31-1]:
function nearestPowerOf2(n) {
return 1 << 31 - Math.clz32(n);
}
// Examples:
console.log(nearestPowerOf2(9)); // 8
console.log(nearestPowerOf2(33)); // 32
关于javascript - 在 JavaScript 中快速接近 2 的幂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26965171/