比较一些
问题描述:
我试图做两个数字之间的比较只有特定的位,但我只想要其中一个号码的第n个位等于一定的二进制值比较一些
例如:断言(5 == 0b1XX)== true 因为5是0b101而第三个MSB是1
是否有反正我可以在JavaScript中使用一个无关(X)?
答
使用位SHIFT>>
按位沿和&
实现这一目标。
// SHIFT off the first two bits, then check the first bit with AND
(0b101 >> 2 & 1) === 1
>>
将向右移位并丢弃任何移位的位。
&
将返回1,当相应的位都是1
。
Here is the MDN page on bitwise operators。
这里是你可以在任何位置使用任何值的函数:
// returns true if 'target' has a 'value' at 'position'
function checkBit(target, position, value) {
return (target >> (position - 1) & 1) === value;
}
答
@hermbit是正确的。我也会试着解释一下。
您可以通过使用>>
运算符来移位数字的位表示形式。
所以,如果你有数字5 0b101
你接班两个地方你0b001
(最后去掉两个地方,充满左肋0。
然后你可以使用&
,使逻辑和两个号。在这种情况下
0b001 & 0b001
等于0b001
,因为它会返回一个数字,其中位将是1
仅在两个数字都是1
的地方。
我希望这能澄清事情。
搜索位运算符 – litelite
是的,您正在寻找'(5&0b100)!== 0' – georg
不幸的是,这不起作用,因为我正在使用别人写的函数,它不允许我操纵要比较的变量。正如我所说,唯一可行的是'不关心'。 –