javascript - 理解 javascript 中的位运算

标签 javascript jquery binary compare bit-manipulation

我目前将数据以二进制形式存储在 XML 文档中,长度为 20 位,每个代表一个 bool 值。

<matrix> 

    <resource type="single"> 
        <map>10001010100011110000</map> 
        <name>Resource Title</name> 
        <url>http://www.yoursite.com</url> 
    </resource>

</matrix>

我正在使用 jQuery 对此进行解析,目前正在使用 for 循环和 charAt() 来确定是否在值为 ==“1”时执行某些操作。

for (var i = 0; i < _mapLength; i++) {
    if (map.charAt(i) == "1") {
        //perform something here
    }
}

作为运行缓慢的巨大循环的一部分,这会发生几次。有人告诉我,我应该使用按位运算符来处理它,它会运行得更快。

我的问题是:

谁能给我一个例子,说明我如何做到这一点?我曾尝试在线阅读教程,但它们似乎就在我头上。 (仅供引用:我计划创建一个 Ruby 脚本,它将我的二进制 0 和 1 转换为我的 XML 中的位。)

或者有人知道一个好的、简单的(甚至可能是简化版)教程或其他可以帮助我掌握这些按位运算符概念的东西吗?

最佳答案

假设不超过 32 位,您可以使用 JavaScript 的内置 parseInt() 函数将 1 和 0 的字符串转换为整数,然后使用 &(和)运算符:

var flags = parseInt("10001010100011110000", 2); // base 2

if ( flags & 0x1 )
{
   // do something
}

...

另请参阅:How to check my byte flag?

(问题是关于在 C 中的使用,但也适用于 JS 中的相同运算符)

关于javascript - 理解 javascript 中的位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1003879/

相关文章:

jquery - 自动化我的 slider

random - 伪随机二进制序列预测

需要对按位非 (~) 运算符进行说明

java - 创建一个二分搜索函数,返回数组中所需元素最左边出现的索引

javascript - 使用 jQuery 在本地系统中加载和解析 JSON 文件

javascript - jQuery if语句在for循环中不起作用

javascript - 设置 jQuery 脚本输出的样式

javascript - 使用button.class提交ajax

c# - 将 Javascript 函数转换为 C# 函数

javascript - 在 if 语句中使用 'this'