是否有按位解决方案在掩码中找到第一个设置位的索引,只设置了一个位? 例如对于8,它将是3,对于16 => 4等等。没有循环plz。 我能想出的最好的解决方案是创建一个索引地图。
答案 0 :(得分:4)
function firstBit(x) {
return Math.floor(
Math.log(x | 0) / Math.log(2)
) + 1;
}
i=4; console.log(i.toString(2), firstBit(i)); // 100 3
i=7; console.log(i.toString(2), firstBit(i)); // 111 3
i=8; console.log(i.toString(2), firstBit(i)); // 1000 4
答案 1 :(得分:1)
对于子孙后代,ES6引入了Math.log2
(以及log10
),其确实如此:
Math.log2(8) === 3
提醒一下,对于任何logA(x)
和logB(x) / logB(A)
A
为B