Javascript 如果字符串太大,如何按位或两个二进制字符串(仅包含0';s和1';s)?(假设字符串长度不超过500)

Javascript 如果字符串太大,如何按位或两个二进制字符串(仅包含0';s和1';s)?(假设字符串长度不超过500),javascript,bit-manipulation,bitwise-operators,implementation,string-comparison,Javascript,Bit Manipulation,Bitwise Operators,Implementation,String Comparison,如果字符串太大,如何按位或两个二进制字符串(仅包含0和1)?(假设字符串长度不超过500) 示例: 字符串1:“11110010001110011011111001101100111111111111111110111111111111111111010110001110111111111111111111101011000101001100110011001100110011001100110011111100101111000111100011110001111000111111111110

如果字符串太大,如何按位或两个二进制字符串(仅包含0和1)?(假设字符串长度不超过500)

示例:

字符串1:“1111001000111001101111100110110011111111111111111011111111111111111101011000111011111111111111111110101100010100110011001100110011001100110011001111110010111100011110001111000111100011111111111011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011

字符串2: “111010111111111111111111111111111111111111111111111010111000110001001111011111111111000101011111111111011111110101111111111111111111111111111111111111111111111111111111111111111111111111111111111111010101001100111111111001001011111011011101101101111011110001100111111100111111111111101101101101101101101101101101101101101111111111111111111111111111111111111111111101111111111111111111111111111111111111111101101101101101101111111111111111111111111111111111111” 另外,如何将生成的二进制字符串解析为整数?(以10为基数)使用(注意二进制字符串开头的
0b
):

var String1=“0B11110010001100110111111111111110011111111111111111111111111111111111111111111111111111111000111011111111111111111111111111110101100010100100110011001100110011001100110011001100111111111111001001011110001111000111100011111111011111111111111111111010101101101101101101101101101101101101101101101101101101101101101101101101101111111111111111111111111111111111101101101101101101101101101101101101101101101101101111111111111111111111111111111111111111111111111111111111111;
var String2=“0B1110101111111111111111101101100111111111111010111000110001001111011000101011111111110010100111111111111111110101111111111111111111111111111111111111111111111111111111111111111111111111111111111111010101001001100010011111001111111001111111001111111001111011111001111111001111111011011111001111111111111011011011011011011011011011011011011011011011011011011011011111111111111111111011011011011111111111111111011011011011011111111111111111111111111111111111111;
变量按位_或=BigInt(String1)| BigInt(String2);
document.querySelector(“#bigint”).innerText=按位_或;//比基特(基数10)
document.querySelector('#binstr').innerText=bitwise_或.toString(2);//二进制字符串
p{wrap-word:break-word;}

使用(注意二进制字符串开头的
0b
):

var String1=“0B11110010001100110111111111111110011111111111111111111111111111111111111111111111111111111000111011111111111111111111111111110101100010100100110011001100110011001100110011001100111111111111001001011110001111000111100011111111011111111111111111111010101101101101101101101101101101101101101101101101101101101101101101101101101111111111111111111111111111111111101101101101101101101101101101101101101101101101101111111111111111111111111111111111111111111111111111111111111;
var String2=“0B1110101111111111111111101101100111111111111010111000110001001111011000101011111111110010100111111111111111110101111111111111111111111111111111111111111111111111111111111111111111111111111111111111010101001001100010011111001111111001111111001111111001111011111001111111001111111011011111001111111111111011011011011011011011011011011011011011011011011011011011011111111111111111111011011011011111111111111111011011011011011111111111111111111111111111111111111;
变量按位_或=BigInt(String1)| BigInt(String2);
document.querySelector(“#bigint”).innerText=按位_或;//比基特(基数10)
document.querySelector('#binstr').innerText=bitwise_或.toString(2);//二进制字符串
p{wrap-word:break-word;}


您可以使用索引的偏移量迭代字符串

函数或(a,b){
让结果=“”,
i=数学最小值(a.长度,b.长度),
offsetA=a.长度-i,
偏移量b=b.长度-i;
而(i--)结果=(a[i+offsetA]| b[i+offsetB])+结果;
结果=a.切片(0,偏移量)+b.切片(0,偏移量b)+结果;
返回结果;
}
控制台日志(或('11','1100');

控制台日志(或('1100','11')可以使用索引的偏移量迭代字符串

函数或(a,b){
让结果=“”,
i=数学最小值(a.长度,b.长度),
offsetA=a.长度-i,
偏移量b=b.长度-i;
而(i--)结果=(a[i+offsetA]| b[i+offsetB])+结果;
结果=a.切片(0,偏移量)+b.切片(0,偏移量b)+结果;
返回结果;
}
控制台日志(或('11','1100');

控制台日志(或('1100','11')10
作为基而不是
2
传递给
toString
@HannanKhan变量
xor
是一个带base 10表示的BigInt,
xor.toString(b)
将其转换为base
b
中的字符串(默认情况下
b=10
,因此
xor.toString()
足够了,但是,对于未来的算术操作,保留变量
xor
a
BigInt
)。@MrGeek我怎么没有注意到这一点。我想要的是OR操作,而不是XOR。那么,它是否同样适用于或同样适用?仅将插入符号(^)替换为管道(|)?@HannanKhan Yes它的工作原理与此类似,并且
'0b'
保留下来,它告诉
BigInt
构造函数输入的字符串是二进制数,而不是以10为基数的十进制数。此外,如何将结果二进制字符串转换为整数?(base 10)@HannanKhan只需将
10
作为基而不是
2
传递给
toString
@HannanKhan变量
xor
是一个带base 10表示的BigInt,
xor.toString(b)
将其转换为base
b
中的字符串(默认情况下
b=10
,因此
xor.toString()
足够了,但是,对于未来的算术操作,保留变量
xor
a
BigInt
)。@MrGeek我怎么没有注意到这一点。我想要的是OR操作,而不是XOR。那么,它是否同样适用于或