我正在创建两个巨大的BigIntegers,然后将它们连接起来.但是和操作不起作用而是返回0.为什么?
BigInteger aa = new BigInteger("213092840173096182527577008347205670468257779233261101799142588416");
BigInteger bb = new BigInteger("226156424291633194186662097633113218007386784142018559245972777080014766080");
System.out.println(aa.and(bb));
Run Code Online (Sandbox Code Playgroud)
输出:0
我在那两个号码上做了一个BigInteger'或'''或''操作正常.还有其他人看到同样的问题吗?
请注意我使用的是jdk 1.8.
那是因为他们and是零!他们没有共同点.
使用python验证:
>>> x = 226156424291633194186662097633113218007386784142018559245972777080014766
080
>>> y = 213092840173096182527577008347205670468257779233261101799142588416
>>> x & y
0L
>>> bin(x)
'0b10000000000000000000000000000000000000000000000000000000000000000000000000000
00000001100000000000000000000000000000000000000100000000000000000000010010100000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000'
>>> bin(y)
'0b10000001100000000000000000000000000000000000000000000000000000110000000000000
00111000000001000000000000000000000000000000000000000000000000000000000000000000
1000000000000000000000000000000000000000000000000000000000000'
>>>
Run Code Online (Sandbox Code Playgroud)
顺便说一下,一般评论:在经过充分测试的大量使用的库中声明一个错误之前,谨慎看看你是否正确使用它/结果是否符合预期.