我有一个整数,我想检查一个位是0还是1。
这样做的最佳做法是什么?
此时我正在做的一个例子:
const myInt = 8; // Binary in 32 Bit integer = 00000000000000000000000000001000
const myBit = myInt << 28 >>> 31; // 00000000000000000000000000000001
if (myBit === 1) {
//do something
}
但我认为这不是做这件事的最佳方法。
你有更好的主意吗?
修改 它总是与我想要检查的位相同,但整数是不同的
答案 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}}。
var value = 10,
bit;
for (bit = 0; bit < 4; bit++) {
console.log(bit, !!(value & (1 << bit)));
}
&#13;