我需要遍历从0到X的数字,对于每个数字,i,我需要检查位置a,b,c,d,e的位是真还是假。
有没有一种简单的方法可以在Javascript中有效地做到这一点?目前,我正在考虑手动遍历数字,将其转换为二进制字符串,然后执行string[a] === "0"
或其他操作。
有一种方法可以使用按位运算符
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
[基本上,您有&,|和XOR运算符,您可以使用它们并结合使用以获得所需的结果。
例如,如果要检查数字2(二进制10)是否在第二个索引中启用了一点,则可以使用以下表达式2&2> 0。表达式将返回true。
[您想要&要检查的数字,仅在您要检查的索引中打开了一点的数字,如果要检查索引3是否在打开的位置,请使用数字4( 100二进制)进行比较。
我最终做了:
for (let i = 0; i < Math.pow(2, k); ++i) {
for (let j = 0; j < k; ++j) {
const jthBitIsSet = (i & (1 << j)) !== 0;
// rest of code...
}
}
k
影响前导0的数量。例如,如果k
= 3,则1变为001
。