Как сравнить две переменные BigInteger как беззнаковые?
У меня есть две переменные BigInteger, значения которых инициализируются из 8-байтовых массивов:
maxOne: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
midOne: 8000:8000:8000:8000:8000:8000:8000:8000
Я хотел бы использовать метод сравнения BigInteger, который вернет, что maxOne больше, чем midOne.
Однако я продолжаю получать противоположное. то есть мидон больше, чем Максон.Внутренне я мог видеть, что они хранятся как:
Максон:
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.
Итак, почему сравнение возвращает противоположное?
В любом случае, мне интересно сравнить их как два беззнаковых целых числа. Есть ли способ достичь этого?