Javascript 如果字符串太大,如何按位或两个二进制字符串(仅包含0';s和1';s)?(假设字符串长度不超过500)
如果字符串太大,如何按位或两个二进制字符串(仅包含0和1)?(假设字符串长度不超过500) 示例: 字符串1:“1111001000111001101111100110110011111111111111111011111111111111111101011000111011111111111111111110101100010100110011001100110011001100110011001111110010111100011110001111000111100011111111111011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011011 字符串2: “111010111111111111111111111111111111111111111111111010111000110001001111011111111111000101011111111111011111110101111111111111111111111111111111111111111111111111111111111111111111111111111111111111010101001100111111111001001011111011011101101101111011110001100111111100111111111111101101101101101101101101101101101101101111111111111111111111111111111111111111111101111111111111111111111111111111111111111101101101101101101111111111111111111111111111111111111” 另外,如何将生成的二进制字符串解析为整数?(以10为基数)使用(注意二进制字符串开头的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
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')你试过什么吗?什么不起作用?我尝试过使用parseInt()然后在整数上使用OR(^),并将其转换回二进制。它适用于小输入,但显然不适用于大输入..你试过什么吗?什么不起作用?我尝试过使用parseInt()然后在整数上使用OR(^),并将其转换回二进制。它适用于小输入,但显然不适用于大输入。另外,如何将结果二进制字符串转换为整数?(base 10)@HannanKhan只需将10
作为基而不是2
传递给toString
@HannanKhan变量xor
是一个带base 10表示的BigInt,xor.toString(b)
将其转换为baseb
中的字符串(默认情况下b=10
,因此xor.toString()
足够了,但是,对于未来的算术操作,保留变量xor
aBigInt
)。@MrGeek我怎么没有注意到这一点。我想要的是OR操作,而不是XOR。那么,它是否同样适用于或同样适用?仅将插入符号(^)替换为管道(|)?@HannanKhan Yes它的工作原理与此类似,并且'0b'
保留下来,它告诉BigInt
构造函数输入的字符串是二进制数,而不是以10为基数的十进制数。此外,如何将结果二进制字符串转换为整数?(base 10)@HannanKhan只需将10
作为基而不是2
传递给toString
@HannanKhan变量xor
是一个带base 10表示的BigInt,xor.toString(b)
将其转换为baseb
中的字符串(默认情况下b=10
,因此xor.toString()
足够了,但是,对于未来的算术操作,保留变量xor
aBigInt
)。@MrGeek我怎么没有注意到这一点。我想要的是OR操作,而不是XOR。那么,它是否同样适用于或