理解javascript中的按位运算

Jus*_*Lee 4 javascript binary jquery compare bit-manipulation

我目前将数据存储在XML文档中作为二进制文件,长度为20位,每个数字代表一个布尔值.

<matrix> 

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

</matrix>
Run Code Online (Sandbox Code Playgroud)

我正在使用jQuery解析它,并且我正在使用for循环并charAt()确定如果值为=="1"则是否执行操作.

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

这种情况发生了几次,因为HUGE循环运行缓慢.有人告诉我,我应该使用按位运算符来处理它,它会运行得更快.

我的问题是:

有人能给我一个如何做到这一点的例子吗? 我曾尝试在线阅读教程,他们似乎正在飞扬我的脑海.(仅供参考:我打算创建一个Ruby脚本,将我的二进制0和1转换成我的XML中的位.)

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

Sho*_*og9 13

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

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

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

...
Run Code Online (Sandbox Code Playgroud)

另请参阅:如何检查我的字节标志?

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