有效地遍历二进制数并检查Javascript中的位值?

问题描述 投票:-1回答:2

我需要遍历从0到X的数字,对于每个数字,i,我需要检查位置a,b,c,d,e的位是真还是假。

有没有一种简单的方法可以在Javascript中有效地做到这一点?目前,我正在考虑手动遍历数字,将其转换为二进制字符串,然后执行string[a] === "0"或其他操作。

javascript binary bit bit-shift
2个回答
0
投票

有一种方法可以使用按位运算符

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators

[基本上,您有&,|和XOR运算符,您可以使用它们并结合使用以获得所需的结果。

例如,如果要检查数字2(二进制10)是否在第二个索引中启用了一点,则可以使用以下表达式2&2> 0。表达式将返回true

[您想要&要检查的数字,仅在您要检查的索引中打开了一点的数字,如果要检查索引3是否在打开的位置,请使用数字4( 100二进制)进行比较。


0
投票

我最终做了:

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

© www.soinside.com 2019 - 2024. All rights reserved.