我有两个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。
在内部,我可以看到它们存储为:
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。
那么,为什么比较会反过来呢?
无论哪种方式,我都有兴趣将它们比作两个无符号整数。有没有办法实现这个目标?
答案 0 :(得分:3)
我建议在最重要的地方放置一个零字节。因此在创建BigInteger时不会出现任何符号位。