バイト(8ビット)&に格納できる最小値がメモリ内のビット(1ビット)でないのはなぜですか? 偶数ブール値はバイトとして格納されます。我々はCPU上のレジスタのように、32または64ビットに最も小さい数字を突きつけますか?格納できる最小値はバイト(8ビット)でビット(1ビット)ではないのはなぜですか?
答えて
プロセッサアクセスの基本的な方法は、使用可能な最小のレジスタのサイズに制限されています。ほとんどのアーキテクチャでは、そのサイズは8ビットです。これらの小さな部分を使うことができます。例えば、Cは、特定のビット長だけである必要のあるフィールドを組み合わせることを可能にする構造体のビットフィールド機能を持っています。アクセスは依然としてバイト全体を読み取る必要があります。
古いエキゾチックなアーキテクチャの中には、実際には「ワードサイズ」が異なっていたものがあります。これらのマシンでは、10ビットが共通のサイズである可能性があります。
最後に、プロセッサはほとんど常に後方互換性があります。例えば、インテルは、386以降の完全な命令互換性を維持しています。 386用にコンパイルされたプログラムを使用すると、i7プロセッサ上で実行されます。ワードサイズを変更すると互換性が失われます。したがってはですが、製造元はこれを行うことはありません。
コンピュータはメモリをバイトレベルで処理するため、バイトより小さいものはアドレス指定できません。
ハードウェアはブロック(バイト、それ以降のワード、およびワード)でデータを読み取るように構築されています。これにより、個々のビットにアクセスするよりも効率が高くなり、より多くのアドレシング範囲も提供されます。したがって、ほとんどのデータは少なくともバイト境界に揃えられています。バイトではなくビットシーケンスで動作するエンコーディングが存在しますが、非常にまれです。
今日では、データはほとんどの場合、とにかくdword(32ビット)境界にアライメントされています。さらに、いくつかのハードウェア(例えばARM)は、整列していないマルチバイト変数にアクセスすることができない。すなわち、16ビットワードは、ワード境界を「交差」することができない - 例外がスローされる。
- 1. 2ビット、1ビット、1ビット、4ビットの値を1バイトの整数に格納する方法
- 2. memcachedに(1ビット)オブジェクトを格納するメモリオーバーヘッドは何ですか?
- 3. Python 3では、ビット1の高い8ビットの符号なし整数を1バイトとして書き込むにはどうすればよいですか?
- 4. atmega32は8ビットまたは16ビットですか?
- 5. readline.hは32ビットのubuntuではなく64ビットですか?
- 6. スマートカードの読み取り(8ビットまたは16ビットですか?)
- 7. は、バイトやビット
- 8. cudaシンプルなアプリケーションが32ビットで64ビットではない
- 9. 8ビットMCUでの32ビット可変シフト
- 10. マイクロコントローラ8ビット、16ビット、32ビットをプログラミングするときの違いは何ですか?
- 11. 特定のビット(24ビット、16ビットなど)のintをPythonに格納する方法は?
- 12. VHDLで8ビットを16ビットに変換するには?
- 13. 文字のサイズが8ビットしかないのはなぜですか?
- 14. uniform_int_distribution <uintmax_t>は62ビット数では機能しますが、63ビットまたは64ビットでは機能しないのはなぜですか?
- 15. 8ビットのバイトを6ビットの文字に変換するにはどうすればよいですか?
- 16. Ubuntuで64ビットのビットであるビット
- 17. VerilogでALU 1ビットをALU 8ビットに変換
- 18. サイズ%8!= 0などのビットの配列を格納するにはどうすればよいですか?
- 19. 32ビットExcelアドインは、64ビットExcelで動作できますか?
- 20. 複数のビット値を1つのテーブル列に格納する
- 21. Golangでは1ビットのバイト数はどれくらいですか?
- 22. python - xビットの2進数をバイト(8ビット)にカット
- 23. 32ビットと64ビットのiOSデバイスで==の動作が異なるのはなぜですか?
- 24. なぜビット数が上位ビットと下位ビットで区切られるのではなく、ビットインターリーブを使用してペアになるのですか?
- 25. 2バイトの最上位ビット
- 26. 16ビットLFSRがDiehardのテストに合格するのはなぜですか?
- 27. 次のCコードで私のWordsize 64ビットはなぜですか?
- 28. 8ビットから16ビットへの変換
- 29. AMD 64ビット(rxtx)のIA 32ビット.dllをロードできない
- 30. 符号なしchar []、ビットまたはバイト?
1ビットを格納することはできませんが、コンパイラの最適化を使用して、複数のビット/ブール値を共有メモリ空間にまとめることができます。これはビットフラグや列挙によく使用されます。あなたはまだ1ビットを保存しませんが、8ブール値の8バイトの格納を避けることができます。 –