我有两个BigInteger变量,其值是从8字节数组初始化的:
maxOne: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
midOne: 8000:8000:8000:8000:8000:8000:8000:8000
我想使用BigInteger比较方法,该方法将返回maxOne大于midOne。
然而,我一直得到相反的结果。i、 e.midOne大于maxOne。
在内部,我可以看到它们存储为:
maxOne:
mag[0]: 1
signum: -1
midOne公司
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。
那么,为什么比较结果正好相反呢?
无论哪种方式,我都有兴趣将它们作为两种
无符号整数
. 有没有办法做到这一点?