バイト(8ビット)&に格納できる最小値がメモリ内のビット(1ビット)でないのはなぜですか? 偶数ブール値はバイトとして格納されます。我々はCPU上のレジスタのように、32または64ビットに最も小さい数字を突きつけますか?格納できる最小値はバイト(8ビット)でビット(1ビット)ではないのはなぜですか?
答えて
プロセッサアクセスの基本的な方法は、使用可能な最小のレジスタのサイズに制限されています。ほとんどのアーキテクチャでは、そのサイズは8ビットです。これらの小さな部分を使うことができます。例えば、Cは、特定のビット長だけである必要のあるフィールドを組み合わせることを可能にする構造体のビットフィールド機能を持っています。アクセスは依然としてバイト全体を読み取る必要があります。
古いエキゾチックなアーキテクチャの中には、実際には「ワードサイズ」が異なっていたものがあります。これらのマシンでは、10ビットが共通のサイズである可能性があります。
最後に、プロセッサはほとんど常に後方互換性があります。例えば、インテルは、386以降の完全な命令互換性を維持しています。 386用にコンパイルされたプログラムを使用すると、i7プロセッサ上で実行されます。ワードサイズを変更すると互換性が失われます。したがってはですが、製造元はこれを行うことはありません。
コンピュータはメモリをバイトレベルで処理するため、バイトより小さいものはアドレス指定できません。
ハードウェアはブロック(バイト、それ以降のワード、およびワード)でデータを読み取るように構築されています。これにより、個々のビットにアクセスするよりも効率が高くなり、より多くのアドレシング範囲も提供されます。したがって、ほとんどのデータは少なくともバイト境界に揃えられています。バイトではなくビットシーケンスで動作するエンコーディングが存在しますが、非常にまれです。
今日では、データはほとんどの場合、とにかくdword(32ビット)境界にアライメントされています。さらに、いくつかのハードウェア(例えばARM)は、整列していないマルチバイト変数にアクセスすることができない。すなわち、16ビットワードは、ワード境界を「交差」することができない - 例外がスローされる。
- 1. memcachedに(1ビット)オブジェクトを格納するメモリオーバーヘッドは何ですか?
- 2. readline.hは32ビットのubuntuではなく64ビットですか?
- 3. スマートカードの読み取り(8ビットまたは16ビットですか?)
- 4. 特定のビット(24ビット、16ビットなど)のintをPythonに格納する方法は?
- 5. VHDLで8ビットを16ビットに変換するには?
- 6. uniform_int_distribution <uintmax_t>は62ビット数では機能しますが、63ビットまたは64ビットでは機能しないのはなぜですか?
- 7. 8ビットのバイトを6ビットの文字に変換するにはどうすればよいですか?
- 8. 複数のビット値を1つのテーブル列に格納する
- 9. 32ビットExcelアドインは、64ビットExcelで動作できますか?
- 10. 8ビットから16ビットへの変換
- 11. EFLAGSビット1が常にセットされているのはなぜですか?
- 12. なぜVByNetでは負のSByte番号が16ビットですか?
- 13. 32ビット版と64ビット版Windowsの両方で動作する小さなアプリ用の小さなデータベースです。
- 14. 32ビットと64ビットは一緒に動作できますか?
- 15. エンディアンはバイト内のビット順序を参照できますか?
- 16. Pythonの5 8ビット変数に4 9ビットと1 4ビットのint変数をパックする方法は?
- 17. これは32ビットまたは64ビットのJVMですか?
- 18. 64ビットBITマシンで8ビットbmpイメージを保存するには? 32ビットマシンでもうまくいきます。
- 19. Javaで16ビット.tiffイメージを8ビット.tiffイメージに変換するには?
- 20. 8ビット整数のビット単位の遷移数を決定できますか?
- 21. 64ビットと32ビットのUbuntuと低メモリシステム - なぜUbuntu 64ビットが私のRAMを食べるのですか?
- 22. Virtual PC 2007ホストは64ビットXP Proです - ゲストは32ビットXP Proです - 共有フォルダにアクセスできない
- 23. 8ビット符号なしPCMを8ビット符号付きPCMに変換
- 24. 64ビットUbuntuの下で32ビットをコンパイルできますか?
- 25. Pythonバイトを「符号なし8ビット整数」に変換する
- 26. OSM上のNASMは、バイトではなくビットで動作します
- 27. 8ビットPNGをアルファで32ビットに変換
- 28. C - 8ビットが32ビットであるかどうかをチェックする方法?
- 29. 変換可能なコード、32ビット/ 64ビットの書き方は?
- 30. 64ビットPythonで32ビットdllまたはexeを使用できますか?
1ビットを格納することはできませんが、コンパイラの最適化を使用して、複数のビット/ブール値を共有メモリ空間にまとめることができます。これはビットフラグや列挙によく使用されます。あなたはまだ1ビットを保存しませんが、8ブール値の8バイトの格納を避けることができます。 –