Java BigInteger.and对大数字不起作用?

时间:2015-05-01 04:17:41

标签: java biginteger

我正在创建两个巨大的BigIntegers,然后将它们连接起来。但是和操作不起作用而是返回0.为什么?

BigInteger aa = new BigInteger("213092840173096182527577008347205670468257779233261101799142588416");
BigInteger bb = new BigInteger("226156424291633194186662097633113218007386784142018559245972777080014766080");
System.out.println(aa.and(bb));
  

输出:0

我在这两个数字上做了一个BigInteger'或''或''操作正常。还有其他人看到同样的问题吗?

请注意我使用的是jdk 1.8。

2 个答案:

答案 0 :(得分:5)

那是因为他们的and为零!他们没有共同点。

使用python验证:

>>> x = 226156424291633194186662097633113218007386784142018559245972777080014766
080
>>> y = 213092840173096182527577008347205670468257779233261101799142588416
>>> x & y
0L
>>> bin(x)
'0b10000000000000000000000000000000000000000000000000000000000000000000000000000
00000001100000000000000000000000000000000000000100000000000000000000010010100000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000'
>>> bin(y)
'0b10000001100000000000000000000000000000000000000000000000000000110000000000000
00111000000001000000000000000000000000000000000000000000000000000000000000000000
1000000000000000000000000000000000000000000000000000000000000'
>>>
btw,一般性评论:在经过充分测试的大量使用的库中声明错误之前,谨慎看看你是否正确使用它/结果是否符合预期。

答案 1 :(得分:0)

解决。这两个数字是十进制的,然后真的是零。