Как хранятся BigInteger

Мне нужно сгенерировать 512-битные BigInts, но я не уверен, какой из двух приведенных ниже вариантов верен:

512 бит означает 512 цифр 1010101010...001010, которые затем преобразуются в десятичное число, которое оно представляет?

Или это означает 512 цифр 0-9, то есть в основном 512-значное число с цифрами от 0 до 9? Что-то вроде 12414124124....54543=512 цифр.


person George Irimiciuc    schedule 01.04.2014    source источник
comment
Каждый бит представляет 0 или 1.   -  person takendarkk    schedule 01.04.2014
comment
Если вы действительно хотите знать, найдите исходный код, который вы можете найти в файле src.zip в каталоге установки JDK.   -  person Jesper    schedule 01.04.2014


Ответы (1)


Из исходного кода они хранятся в массиве int

Величина этого BigInteger в обратном порядке: нулевой элемент этого массива является наиболее значащим целым числом величины. Величина должна быть "минимальной" в том смысле, что наиболее значимое целое (mag[0]) должно быть ненулевым. Это необходимо для того, чтобы для каждого значения BigInteger существовало ровно одно представление. Обратите внимание, что это означает, что ноль BigInteger имеет массив mag нулевой длины.

118 
119     int[] mag;
120 
121     // These "redundant fields" are initialized with recognizable nonsense
122     // values, and cached the first time they are needed (or never, if they
123     // aren't needed).
124 
person Keerthivasan    schedule 01.04.2014
comment
Но хранит ли он цифру для каждой записи массива или 32-битные целые части? - person Vallerious; 20.10.2020