我是一个javascript代码猴子,所以这对我来说是处女地。
我有两个“字符串”,只是零和一个:
var first = "00110101011101010010101110100101010101010101010";
var second = "11001010100010101101010001011010101010101010101";
我想执行按位&
(我以前从未使用过)以确定是否存在1
出现在两个字符串中的任何索引。
这些可能是非常长的字符串(成千上万个字符)。我想将它们作为数字一起添加,然后转换为字符串并检查2
,但javascript不能保持大间隔的精度,我将数字作为"1.1111111118215729e+95"
之类的字符串返回,这不是'我真的很好。
我可以使用两个未指定长度的字符串(它们的长度也可能不同)并以某种方式使用按位&
进行比较吗?
我已经构建了循环逐字符解决方案,但1001^0110
会让我成为主要的性能升级。请不要将javascript循环解决方案作为答案,这个问题是关于使用按位运算符。
答案 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"