gpt4 book ai didi

java - 如何比较两个无符号的 BigInteger 变量?

转载 作者:行者123 更新时间:2023-11-30 07:49:04 26 4
gpt4 key购买 nike

我有两个 BigInteger 变量,它们的值是从 8 字节数组初始化的:

maxOne: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
midOne: 8000:8000:8000:8000:8000:8000:8000:8000

我想使用 BigInteger 比较方法,返回 maxOne 大于 midOne。

然而,我总是得到相反的结果。即 midOne 大于 maxOne。

在内部,我可以看到它们存储为:

最大一:

mag[0]: 1
signum: -1

中元

mag[0]: 7FFF7FFF
mag[1]: 7FFF7FFF
mag[2]: 7FFF7FFF
mag[3]: 7FFF8000
signum: -1

我认为“较大的绝对”值小于“较小的绝对”值,当两者都具有 signum=-1 时(例如 -3 小于 -1)。

但由于某些原因,maxOne.compareTo(midOne) 返回 -1。

在检查他们的 BigInteger.doubleValue() 时,我看到了

maxOne = -1.0
midOne = -1.7013858727242528 E38

即使 compareTo() 使用 doubleValue() 进行比较,maxOne > midOne。

那么,为什么比较返回相反的结果?

无论哪种方式,我都对将它们作为两个无符号整数 进行比较感兴趣。有办法实现吗?

最佳答案

我建议在最重要的地方放一个零字节。这样在创建 BigInteger 时就不会出现任何符号位。

关于java - 如何比较两个无符号的 BigInteger 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48750285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com