Java BigInteger.and 不适用于大数字?

标签 java biginteger

我正在创建两个巨大的 BigIntegers,然后对它们进行运算。但是 and 操作不起作用,而是返回 0。为什么?

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

Output: 0

我对这两个数字进行了 BigInteger“或”运算,“或”运算运行良好。还有其他人看到同样的问题吗?

请注意,我使用的是 jdk 1.8。

最佳答案

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

使用 python 验证:

>>> x = 226156424291633194186662097633113218007386784142018559245972777080014766
080
>>> y = 213092840173096182527577008347205670468257779233261101799142588416
>>> x & y
0L
>>> bin(x)
'0b10000000000000000000000000000000000000000000000000000000000000000000000000000
00000001100000000000000000000000000000000000000100000000000000000000010010100000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000'
>>> bin(y)
'0b10000001100000000000000000000000000000000000000000000000000000110000000000000
00111000000001000000000000000000000000000000000000000000000000000000000000000000
1000000000000000000000000000000000000000000000000000000000000'
>>>

顺便说一句,一般性评论:在声明一个经过良好测试的大量使用的库中的错误之前,谨慎的做法是查看您是否使用不当/结果是否符合预期。

关于Java BigInteger.and 不适用于大数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29981534/

相关文章:

java - Admob 横幅位置错误

java - 在 Mac 上,如何创建接受 .jar 文件的图标、打开终端并运行该 .jar 文件?

java - 如何使用 API 在 ZOHO INVOICE 中添加新客户?我使用以下 POST 方法创建新客户..但我不会工作

java - 有没有更简洁的方法来编写这个轮询循环?

c++ - 将字符串中的 bigint 除以 2

kotlin - 未解析的引用 : [BigInteger]. longValue

java - 如何将变量传递给 BigInteger?

java - 为什么 Spring 框架叫 "non-intrusive"?

pointers - Golang : help understanding pointers, 分配和意外行为

c# - 如何生成一定范围内的随机 BigInteger?