Javascript得到一点点

时间:2017-09-19 14:39:50

标签: javascript bit-manipulation

我有一个整数,我想检查一个位是0还是1。

这样做的最佳做法是什么?

此时我正在做的一个例子:

const myInt = 8; // Binary in 32 Bit integer = 00000000000000000000000000001000
const myBit = myInt << 28 >>> 31; // 00000000000000000000000000000001

if (myBit === 1) {
    //do something
}

但我认为这不是做这件事的最佳方法。

你有更好的主意吗?

修改 它总是与我想要检查的位相同,但整数是不同的

3 个答案:

答案 0 :(得分:1)

myInt = 8+4; // 1100
n = 3;
(myInt >> n) & 0x1; //  1
n = 2;
(myInt >> n) & 0x1; //  1
n = 1;
(myInt >> n) & 0x1; //  0
n = 0;
(myInt >> n) & 0x1; //  0

通用解决方案将您的数字向右移动N位,并应用位掩码,只留下最后一位,其他所有都设置为0

答案 1 :(得分:0)

我认为你可以使用按位AND

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

my32Bit = 123414123;
twoBy7 = 128;

//check the 7th bit
if (my32Bit & twoBy7) {
  // should return 1 if the 7thbit is 1
}

答案 2 :(得分:0)

您可以使用left shift << bitwise AND &运算符来获取该位和<{3}}。

&#13;
&#13;
var value = 10,
    bit;
    
for (bit = 0; bit < 4; bit++) {
    console.log(bit, !!(value & (1 << bit)));
}
&#13;
&#13;
&#13;