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?