Java.math.BigInteger.and()如何工作?

时间:2016-03-09 17:22:20

标签: java biginteger

根据this tutorial,当调用带有值6和3的.and()时,来自Java.math.BigInteger.and()的结果是2.这是如何工作的?它既不连接也不添加。

5 个答案:

答案 0 :(得分:5)

Logical bitwise And operation

6 = 110b(b表示二进制)
3 = 011b

110b & 011b = 010b = 2

答案 1 :(得分:1)

对于2个输入

AND真值表

enter image description here

所以对于两个整数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.

结果0102(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操作相同,&,|;