私は、Pythonで整数精度はハードウェアの制約にのみ制限されることを知りました。 2の補数で符号付きintを表現する場合、符号拡張は永遠に続くでしょう。 Pythonは代わりに符号ビットを使ってそれらを表現していますか?または、他の何か?-1(または任意の負の値)はPythonでどのように表現されますか?
3
A
答えて
3
CPython(最も一般的な実装)は、符号なしの数値である任意の量のピースを含むPyLong
タイプの整数を格納します。そこに何個あるかのカウントは、PyVarObject
に存在する汎用フィールドob_size
に格納されます。このフィールドはdescribedで、
のように、これはゼロに初期化する必要があります。動的に割り当てられた型オブジェクトの場合、このフィールドは特別な内部的な意味を持ちます。
PyLong
ため
そして実際、その意味は非常に特別である:それは数枚のカウントであるが、その数が負の場合、ob_size
は負です。
あなたはここで、_PyLong_Negate()
でアクションでそれを見ることができます:PyLong_FromDouble()
でも、より明確に、おそらくhttps://github.com/python/cpython/blob/master/Objects/longobject.c#L73かを、ここで:https://github.com/python/cpython/blob/master/Objects/longobject.c#L328からPy_SIZE()
がob_size
フィールドのためだけのアクセサであることに注意してください。
1
Hereは、Laurent Luce on Python整数のブログ記事です。最も一般的なPythonの実装であるCPythonのように見えますが、整数は符号付きのlong
という値で保存されますが、アクセスが高速になるように管理されている非常に小さい値は除きます。 \
関連する問題
- 1. どのように "任意の文字"正規表現ですか?
- 2. Goでは、(任意の)ポインタ型の値がどのようにチェックされますか?
- 3. BaseComponentのリファレンスまたはコンポーネントの任意のレベルにアクセスするにはどうすればよいですか?
- 4. 任意の浮動小数点値はどのように無限大と比較されますか?
- 5. 任意の数に一致する正規表現パターンには、2を除く1-9が含まれます。
- 6. バイナリファイルまたは任意のファイルをリモートサーバに転送するにはどうすればよいですか? - Ruby
- 7. はどのように任意に含ま/
- 8. Rational(またはコンストラクタを持たない任意のクラス)からどのように継承できますか?
- 9. どのようにビットマップを任意の角度で回転させますか?
- 10. RedisのHINCRBYハッシュフィールド-1負にのみまで0または非負の値
- 11. 任意の長さの文字列中の%または=または:の数を数える正規表現
- 12. Pythonの正規表現ですが、+ Xはどういう意味ですか?
- 13. Perlでは、どのようにしてハッシュから任意の値を取得できますか?
- 14. jailbrokenされたiPhoneに任意の.app iPhoneアプリケーションをインストールするにはどうすればよいですか?
- 15. Android - 動的に変更されました現在のアクティビティから任意のイメージで任意のsetImageメソッドを呼び出すと、レイアウトマージンがリセットされます
- 16. TypeScript:void戻り値の型は任意の型に変換されますか?
- 17. 全角13の任意の数の空白または桁の正規表現
- 18. 次のphp正規表現はどのように評価されますか?
- 19. golangのbig intはどのように表現されていますか?
- 20. jquery-mobileの現在/ライブページはどのように表示されますか?
- 21. 未処理のタイプ「エラー」は任意のリテラルでは表現できません
- 22. どのように定義されて任意の?
- 23. symfonyで別々の責任はどのように作成されますか?
- 24. SetThreadAffinityMaskは無視されます....任意のアイデアですか?
- 25. どのように私は現在の値を追加することによって任意のキーの値を更新することができます
- 26. メモリはPythonでどのように管理されますか
- 27. デーモンスレッドはどのようにPythonで殺されますか(2.7)
- 28. キャプチャグループはどのように機能しますか? (wrt pythonの正規表現)
- 29. どのように任意のブランチ
- 30. asyncio.sleepは負の値でどのように機能しますか?
Pythonのどの実装ですか?どのハードウェアですか? –
Python言語では、格納方法が定義されていないため、実装に依存しています。 – cdarke