我正在尝试对两个数字进行比较,但是我只希望其中一个数字的第n位等于某个二进制值
ex:assert(5 == 0b1XX)== true 因为5是0b101而第3个MSB是1
无论如何我可以在javascript中使用不关心(X)吗?
答案 0 :(得分:1)
按位 SHIFT >>
以及按位 AND &
来实现此目的。
// 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;
}
答案 1 :(得分:0)
@hermbit是对的。我也会尝试解释它。
您可以使用>>
运算符来移动数字的位表示。
因此,如果您的号码为0b101
并且您将其移动两个位置,则会获得0b001
(删除最后两个位置并在左侧填充0。
然后,您可以使用&
创建逻辑和两个数字。在这种情况下
0b001 & 0b001
等于0b001
,因为只有在两个数字为1
的地方,它才会返回一个位为1
的数字。
我希望这能澄清事情。