java中的长二进制字符串算法

java中的长二进制字符串算法,java,string,math,binary,Java,String,Math,Binary,我正在做一个基于服务器的程序,我想把两个二进制字符串相乘。这些字符串相当长,因此不能转换为long或int类型。这些字符串之一的示例如下: 01100010 00110110 00110011 00110111 00110100 00111001 00111001 00110110 01100011 00110110 001100101 00111001 00110011 00110011 00110011 00110010 00110010 00110010 01100001 00110101

我正在做一个基于服务器的程序,我想把两个二进制字符串相乘。这些字符串相当长,因此不能转换为
long
int
类型。这些字符串之一的示例如下:

01100010 00110110 00110011 00110111 00110100 00111001 00111001 00110110 01100011 00110110 001100101 00111001 00110011 00110011 00110011 00110010 00110010 00110010 01100001 00110101 011001100 01100011 01100011 01100010 011001100100 00111000 011001100100 00110010 00110110 00110110 00110110 00110100 00111000 00111000 01100110011 00110011 00110100 00110110 00110100 0011100001100110 01100110 01100100 00110100 00110101 00110100 01100010 01100010 00111001 00111001 00110110 01100110 01100010 00111000 00110011 00110000 00110011 00110010 01100110 01100010 00110001 01100010 01100001 00110100 01100011 01100011 00111000 00110110 00110111 01100110 00110001 00111001 00110110 00110110 00110001 00110001 01100101 00110010 00111000 01100100 01100110 01100110 01100001 01100100 00110100 00110110 00110000 00110010 00111001 00111001 00110011 00111000 01100001 00111001 00110111 00110111 00110011 00110010 01100011 00110100 00110000 01100011 01100101 01100010 01100011 01100011 00110101 01100110 00110111 00110000 00110110 00110000 00110110 00110101 01100101 01100001 01100100 00110011 01100100 00110100 01100110 01100110 00110111 00110110 00110011 00110111 00110100 00111001 00111001 00111001 00110000 00110001 00111001 01100001 01100010 01100101 00110011 00110010 00111001 01100011 01100110 01100101 00110011 00110010 01100011 01100011 00110010 00111000 00110110 00110001 01100001 00110111 00110110 00110101 01100010

这个字符串可以有空格,也可以没有。没关系。我的问题是,如何用这个字符串乘以01100011?乘数的长度是可变的,因此必须具有灵活性

提前谢谢

只需使用并指定基数:

BigInteger bigNumber = new BigInteger("101000101110...1010".replaceAll("\s+", ""), 2);
您会发现它支持诸如
乘法
加法
等算术运算。例如,在创建上述变量后,我们可以说:

BigInteger bigProduct = bigNumber.multiply(someOtherBigNumber);
假设我们已经创建了另一个
biginger


编辑:正如评论中所指出的,您需要删除二进制字符串表示形式中的空格,这很容易-我已更新了答案以包含此步骤。

最简单的解决方案是使用基数2

BigInteger multiply = new BigInteger("01100010...01100010", 2)
   .multiply(new BigInteger("01100011", 2));

System.out.println(multiply.toString(2));
相关问题:


下面使用带基数的BigInteger进行实际运算,并以十进制和二进制形式输出结果

String s1 = "01100010 00110110 ...";
String s2 = "01100011";
s1 = s1.replaceAll(" ", "");
s2 = s2.replaceAll(" ", "");
BigInteger i1 = new BigInteger(s1, 2);
BigInteger i2 = new BigInteger(s2, 2);
BigInteger res = i1.multiply(i2);
System.out.println(res);
System.out.println(res.toString(2));

通过将二进制数的基数指定为2来使用BigInteger:

BigInteger num = new BigInteger(stringVar,2);  
这个值乘以另一个值:

BigInteger result = num.multiply(new BigInteger("01100011",2);

你能用吗?我能,但我不知道我该怎么用它做二进制乘法。。。由于我从未使用过biginteger…调用号是数字,无论它们显示在什么基上,biginteger都有一个采用字符串和基数的构造函数,一个采用基数参数的toString方法,以及一个乘法方法。OP必须删除空格。
new biginteger(“00110001 01100001 00110111 00110110 00110101 01100010”。替换(“,”),2)
为什么要执行
toString(2)
而不是将2移动到第二个大整数的第二个参数?我错过了第二个参数,谢谢;)
toString(2)
用于二进制结果打印