根据this tutorial,当调用带有值6和3的.and()时,来自Java.math.BigInteger.and()的结果是2.这是如何工作的?它既不连接也不添加。
答案 0 :(得分:5)
答案 1 :(得分:1)
AND真值表
所以对于两个整数3和4
3 = 011b
4 = 100b
b表示基地2。
3&4 = 011&100.
所以对我们得到的每个位位置应用AND真值表
1&0 = 0
1&0 = 0
0&1 = 1
实际上,我正在向两个号码的MSB申请和操作LSB。
现在引入Biginteger class
来计算不适合原始数据类型long int
的大数。
BigInteger
将执行相同的操作,但数量太大。
答案 2 :(得分:0)
它的按位和操作。在你给出的链接显示的问题中,
110 & 011 = 010
110 is the binary value of 6.
011 is the binary value of 3.
结果010
是2(decimal)
的二进制文件。
答案 3 :(得分:0)
它和& (按位和)。这意味着它以二进制表示形式返回匹配的1#。 例如,6是0110,3是0011所以: 6& 3是0110& 0011 = 0010 = 2
答案 4 :(得分:0)
java中的BigInteger与原始类型int和long相同。您在数字基元类型上执行的所有Bitwise操作与和(),或(),BigInteger.BigInteger的xor()方法相同,就像无限整数那样没有固定的内存 (例如int是4字节最小值是 - 2,147,483,648。( - 2 ^ 31)最大值是2,147,483,647(含)。(2 ^ 31 -1))。你的BigInteger在内部存储为
final int [] mag;
For和()方法 如果你的BigInteger值大于int类型,它将添加到array.Bitwise操作在两个输入上的interger数组之间完成,例如你有两个大整数x和y
它会像计算一样 x.mag [0]& y.mag [0] x.mag [1]& y.mag [1] 。 。 添加每个返回的所有值并将其总结并给出最终值。最后它与Bitwise操作相同,&,|;