Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用未指定长度的位的字符串(数组?)_Javascript_Bitwise Operators - Fatal编程技术网

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

Javascript 使用未指定长度的位的字符串(数组?),javascript,bitwise-operators,Javascript,Bitwise Operators,我是一个javascript代码猴子,所以这是我的处女地 我有两个“字符串”,它们只是0和1: var first = "00110101011101010010101110100101010101010101010"; var second = "11001010100010101101010001011010101010101010101"; 我想执行一个按位的&(我以前从未使用过),以确定两个字符串中是否都有1出现的索引 这些可能是非常长的字符串(数千个字符)。我想把它们作为数字加在一

我是一个javascript代码猴子,所以这是我的处女地

我有两个“字符串”,它们只是0和1:

var first =  "00110101011101010010101110100101010101010101010";
var second = "11001010100010101101010001011010101010101010101";
我想执行一个按位的
&
(我以前从未使用过),以确定两个字符串中是否都有
1
出现的索引

这些可能是非常长的字符串(数千个字符)。我想把它们作为数字加在一起,然后转换成字符串并检查
2
,但是javascript不能在很长的时间间隔内保持精度,我将数字作为字符串返回,比如
“1.111111111 8215729e+95”
,这对我没有多大好处

我可以取两个长度不确定的字符串(它们也可能不相同)并以某种方式使用位
&
来比较它们吗


我已经通过每个角色解决方案构建了循环,但是
1001^0110
将给我带来重大的性能提升。请不要给出javascript循环解决方案作为答案,这个问题是关于使用位运算符的。

正如您自己已经注意到的,如果是关于整数值,javascript的功能是有限的。你必须把你的琴弦切成“可食用”的部分,然后慢慢地穿过它们。由于parseInt()函数接受一个基数,您可以将64个字符转换为8字节的int(或32个字符转换为4字节的int),并使用and运算符测试设置位(
if(a&b!=0)

如果您要问问题,我不会告诉回答者,如果他们给出某个答案,您将对他们进行否决,尤其是如果答案可能是最好的answer@scrblnrd3除非当我在一个功能性应用不寻常的肢体上行走时,有很多人提出完全不相关的答案,即“正常”解决方案。我觉得这是一个合理的警告。不过,除了你问了一个关于位的问题外,使用循环还有问题吗?@scrblnrd3不,循环实际上对我正在做的事情有效,我已经做过了。我在寻找性能,我的理解是,按位运算符的性能很高,至少看起来与我正在尝试的类似。好的。这是有道理的。您可能希望在问题中添加这一点,但如果字符串长度为数千个字符,这将不起作用,询问者已将其作为一项要求。我建议对此进行基准测试,以了解它是否确实比遍历字符更快。我有疑问,我也有。原来的问题不包括循环法。这很简单:取一个字符串并对其进行迭代。一旦你点击“1”,测试另一个字符串。只有当解释器非常慢且内置转换函数很快时,上述方法才会更快。@JLRishe当我为我的场景构建了完整的功能时,我将进行基准测试。这里的转换函数肯定是通配符-实际匹配应该要快得多。@Randy:别忘了发布结果。我很好奇:-)@Ronald我还在研究它,但由于我需要匹配的方式,我认为这在我特定的扩展场景中不起作用(我必须获取64个字符的块,一次一个索引,并将它们与另一个字符串进行匹配,以64个字符的块,一次一个索引,然后沿着每个字符串移动)。但是如果有人过来看,这个答案总结了可能发生的事情。
var first = "00110101011101010010101110100101010101010101010010001001010001010100011111",
    second = "10110101011101010010101110100101010101010101010010001001010001010100011100",
    firstInt = parseInt(first, 2),
    secondInt = parseInt(second, 2),
    xorResult = firstInt ^ secondInt, //524288
    xorString = xorResult.toString(2); //"10000000000000000000"