JavaScript中的逐位测试

hsz*_*hsz 1 javascript bit-manipulation bitwise-operators

我有一个以下的字符串:

var input = '11100001';
Run Code Online (Sandbox Code Playgroud)

我想检查是否存在8位,所以我尝试过:

input & '10000000'
Run Code Online (Sandbox Code Playgroud)

但它给了我8918528.我该怎么测试呢?

paw*_*wel 6

你试图在两个字符串上做一个按位AND,它隐式地将它们转换为假设为10的整数.你应该将它们解析为明确提供基数的整数:

parseInt(input,2) & parseInt('10000000',2)
// 128
Run Code Online (Sandbox Code Playgroud)

编辑:检查是否n设置了-th位你可以按n-1位向右移动并检查它是否正确1

parseInt(input,2) >> 7 & 1 === 1
Run Code Online (Sandbox Code Playgroud)

  • `... .toString(2)`:-) (2认同)