Кажется, у меня есть проблема с двумя дополнениями в Java BigInteger.У меня есть 64-разрядное целое число, где только msb и вторая msb установлены в 1, остальные равны 0.
В десятичном виде это составляет: -4611686018427387904
Сторона Javaмое приложение получает это десятичное число в виде строки и преобразует его в BigInteger следующим образом:
BigInteger bi = new BigInteger("-4611686018427387904", 10);
Затем необходимо отобразить это число в двоичном и шестнадцатеричном виде.Я пытался использовать:
String bin = bi.toString(2);
String hex = bi.toString(16);
, но я получаю:
-100000000000000000000000000000000000000000000000000000000000000
-4000000000000000
, тогда как я ожидаю получить:
1100000000000000000000000000000000000000000000000000000000000000
c000000000000000
Любые советы?