Java: реализация беззнакового 128-битного целого

сначала я должен спросить:
Кто-нибудь знает о текущей реализации 128b UINT для Java?

Мне нужно что-то, чтобы держать природные кардинальные ценности. т.е.: Огромный счетчик.
Я знаю BigIntegers, которые медленны и неизменны. 128-битный UINT имеет смысл...

Я думал о внедрении OWORD, используя пару примитивных длин.

Переполнение будет генерировать исключение, а не Wraparound.

Какой пример исходного кода/блогов следует искать для реализации работы этого класса?

Ответ 1

Я бы использовал 32-битные целые числа в качестве представления, потому что вам нужен более крупный тип (длинный), чтобы получить дополнительную точность для бита переноса, обнаружения переполнения и умножения. Подумайте о 32-битовом целой цифре и примените алгоритмы из начальной школы.

Ответ 2

Не говорите мне, что вы планируете иметь 128 статических сеттеров и геттеров, по одному на каждый бит??? Я бы окончательно выбрал setBit (int index, boolean value) и getBit (int index) как методы экземпляра.

Больше вещей, которые вам нужны: метод toString(), чтобы вы могли получить читаемое человеком представление (в какой-то момент вы захотите напечатать числа, я думаю).

Помните, что все порядковые типы в java подписаны (за исключением char), поэтому, если вы планируете использовать две длинные строки, всегда помните, что нижняя часть может быть проблематичной для обнаружения переполнения и т.д. во всяком случае, у вас будет 127-битное число, за исключением того, что нижняя часть будет обрабатываться как 63-битная без знака.

Ответ 3

Почему бы не использовать BigInteger?