javascript - 仅比较数字的特定位

标签 javascript bit-manipulation

我正在尝试对两个数字进行比较,但我只希望其中一个数字的第 n 位等于某个二进制值

例如:断言 (5==0b1XX) == true 因为 5 是 0b101 并且第 3 个 MSB 是 1

我可以在 javascript 中使用无关 (X) 吗?

最佳答案

使用按位 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;
}

关于javascript - 仅比较数字的特定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46694380/

相关文章:

javascript - 带有JSON返回的Jquery ajax无法访问JSON内部的数据

javascript - 升级 reactJS 后出现非法访问错误

javascript - 如何有效地找到一个大整数中的一个字节的值

c - 在压缩方面将字符串存储为 'unsigned char' 的二进制字符串

javascript - 如何获取表格行和列的内容

javascript - Vimeo API -Froogaloop。 $f 未定义

javascript - 返回字典对象时 flask 中的响应错误

c++ - 如何检查 int 中是否设置了一位?

c++ - 如何将数字 0-8 转换为 C++ 中的二进制第 0-8 位?

c - 通用循环按位移位行为