Я пишу код Python для вычисления большого числа чисел и серьезно беспокоюсь о памяти, используемой при вычислении.
Таким образом, я хочу считать каждый бит каждой переменной.
Например, у меня есть переменная x, которая является большим числом и хочет подсчитать количество бит для представления x.
Следующий код, очевидно, бесполезен:
x=2**1000
len(x)
Таким образом, я перехожу к использованию следующего кода:
x=2**1000
len(repr(x))
Переменная x равна (в десятичной форме):
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
но приведенный выше код возвращает 303
Вышеупомянутая длинная длинная последовательность имеет длину 302, поэтому я считаю, что 303 должен быть связан только с длиной строки.
Итак, вот мой оригинальный вопрос:
Как узнать размер памяти переменной x?
Еще одна вещь; в языке C/С++, если я определяю
int z=1;
Это означает, что для z выделено 4 байта = 32 бита, а биты расположены как 00..001 (31 0 и один 1).
Здесь моя переменная x огромна, я не знаю, следует ли ей одно и то же правило распределения памяти?