Reprezentacja dużej liczby całkowitej x86-64?
W jaki sposób wysokowydajne biblioteki natywne typu big-integer dla x86-64 stanowią dużą liczbę całkowitą w pamięci? (czy się różni? Czy istnieje najbardziej powszechny sposób?)
Naiwnie myślałem o przechowywaniu ich jako 0-zakończonych ciągów liczb w bazie 264.
Załóżmy na przykładX
jest w pamięci jako:
[8 bytes] Dn
.
.
[8 bytes] D2
[8 bytes] D1
[8 bytes] D0
[8 bytes] 0
Niech B = 264
Następnie
X = Dn * Bn + ... + D2 * B2 + D1 * B1 + D0
Pusty ciąg (tj. 8 bajtów zera) oznacza zero.
Czy to rozsądny sposób? Jakie są plusy i minusy tego sposobu? Czy jest lepszy sposób?
Jak poradziłbyś sobie z podpisaniem umowy? Czy uzupełnienie 2 działa z tą wartością zmiennej długości?
(Znajdź to:http://gmplib.org/manual/Integer-Internals.html Co to za kończyna?)