使用未指定长度的位的字符串(数组?)

时间:2014-01-28 14:38:51

标签: javascript bitwise-operators

我是一个javascript代码猴子,所以这对我来说是处女地。

我有两个“字符串”,只是零和一个:

var first =  "00110101011101010010101110100101010101010101010";
var second = "11001010100010101101010001011010101010101010101";

我想执行按位&(我以前从未使用过)以确定是否存在1出现在两个字符串中的任何索引。

这些可能是非常长的字符串(成千上万个字符)。我想将它们作为数字一起添加,然后转换为字符串并检查2,但javascript不能保持大间隔的精度,我将数字作为"1.1111111118215729e+95"之类的字符串返回,这不是'我真的很好。

我可以使用两个未指定长度的字符串(它们的长度也可能不同)并以某种方式使用按位&进行比较吗?

我已经构建了循环逐字符解决方案,但1001^0110会让我成为主要的性能升级。请不要将javascript循环解决方案作为答案,这个问题是关于使用按位运算符。

2 个答案:

答案 0 :(得分:1)

正如您已经注意到的那样,如果javascript是关于整数值,则javascript的功能有限。你必须将你的琴弦切成“可食用的”部分并按照它们的方式进行操作。由于parseInt()函数接受一个基数,你可以将64个字符转换为8个字节的int(或32到4个字节的int),并使用和运算符来测试设置位(if (a & b != 0)

答案 1 :(得分:-1)

var first = "00110101011101010010101110100101010101010101010010001001010001010100011111",
    second = "10110101011101010010101110100101010101010101010010001001010001010100011100",
    firstInt = parseInt(first, 2),
    secondInt = parseInt(second, 2),
    xorResult = firstInt ^ secondInt, //524288
    xorString = xorResult.toString(2); //"10000000000000000000"