私は大きな数の計算を行う Python コードを書いていますが、計算に使用されるメモリについて深刻な懸念があります。
したがって、各変数のすべてのビットをカウントしたいと思います。
たとえば、大きな数値である変数xがあり、 xを表すビット数をカウントしたいとします。
次のコードは明らかに役に立たない:
x=2**1000
len(x)
したがって、次のコードを使用します。
x=2**1000
len(repr(x))
変数xは (10 進数で) 次のとおりです。
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
しかし、上記のコードは303を返します
上記の long long シーケンスの長さは 302 であるため、303は文字列の長さにのみ関連していると考えられます。
だから、ここに私の元の質問があります:
変数xのメモリサイズを知るにはどうすればよいですか?
もう一つ; C/C++ 言語で定義すると、
int z=1;
これは、zに 4 バイト = 32 ビットが割り当てられ、ビットが 00..001 (31 個の 0 と 1 個の 1) として配置されることを意味します。
ここで、私の変数xは巨大です。同じメモリ割り当て規則に従っているかどうかわかりませんか?