Как Python выделяет память для больших целых чисел?
Тип int
имеет размер 28 bytes
, и по мере увеличения значения int
размер увеличивается с шагом 4 bytes
.
-
Почему
28 bytes
изначально для любого значения с1
? -
Почему приращения
4 bytes
?
PS: Я запускаю Python 3.5.2 на x86_64 (64-разрядная машина). Любые указатели/ресурсы/PEP о том, как работают (3.0+) интерпретаторы на таких огромных числах, - это то, что я ищу.
Код, иллюстрирующий размеры:
>>> a=1
>>> print(a.__sizeof__())
28
>>> a=1024
>>> print(a.__sizeof__())
28
>>> a=1024*1024*1024
>>> print(a.__sizeof__())
32
>>> a=1024*1024*1024*1024
>>> print(a.__sizeof__())
32
>>> a=1024*1024*1024*1024*1024*1024
>>> a
1152921504606846976
>>> print(a.__sizeof__())
36