Если я правильно понимаю, ваш код может быть значительно упрощен, и нет необходимости удваивать из-за пух.дважды используйте IEEE, и они не сохраняются точно в памяти.Вы можете использовать что-то вроде этого:
long amount = 1;
int bits = -1;
bits += 64;
amount = (amount << bits) - 1;
System.out.println("number: " + amount);
, за исключением того, что оно выдает на одно значение меньше, чем вы ожидаете.(и я думаю, что из-за длинного диапазона чисел у нас есть такой диапазон [-128, 127] для дополнения до двух). Я думаю, что вы пишете неправильно, потому что я проверяю, и это должно быть так.Однако я не знаю, хотите ли вы этого или нет.