なぜワードには常に2の累乗でバイトが含まれているのか分かりません。なぜそれが5バイトか6バイトを含むことができないのですか?なぜメモリ内のワードに2^nバイトのバイトが含まれているのですか?
答えて
これは必ずしもそうではありません。 12ビット(PDP-8)の18ビット(PDP-7)36ビット(PDP-10)または60ビット(CDC 6600)を有する機械が過去にあった
今日でも奇妙なサイズのマシン。マイクロチップ社のPIC 16xxxxファミリは14ビットワードでイントロダクションを格納し、24xxxxシリーズは24ビットインストラクションを使用します。しかし、これらは汎用の機械ではなく、特殊な組み込みチップです。
ほとんどの場合、物事は2の累乗に移動しました。このために大きな進展があったのは古いIBM 360でした。これは、4ビットの8ビットバイトを含む32ビットの語句を使用していました。
2ワードサイズのパワーと1ワードあたり2バイトの累乗のこの組み合わせは、整数/ポインタと文字の両方を簡単かつ効率的に扱いました。
現代の機械では、これを64ビットワードに8個の8ビットバイト/ワードで単純に更新し、この有用な利点を保持しています。
あなたが言及している例のどれにバイトアドレス可能なメモリがありますか?メモリがワード・アドレス可能である場合、アドレス計算はワードのビット数、またはワードのオクテット数でスケーリングする必要はありません。 (たとえば、マシンが12ビットのメモリバスを持っているだけかもしれません) –
ほとんどのマシンが元の場所に戻ります。しかしながら、PDP-10は、ワードを6つの6ビット「バイト」または5つの7ビットのものに浪費したビットで、または4つの8ビット・バイトを4つの無駄なビットまたは4つの9ビット・バイトに分解することができる。特別な指示がこれを行うために使用された場所であり、ワード境界やその他の問題に対処することはプログラマの責任でした。実際には、36ビットワードに収まる限り、任意の数の可変ビットフィールドに細分することができます。 –
ええと、文字列にN番目の文字が必要な場合は、探しているキャラクターが含まれている単語のアドレスを取得するために、Nを非2のべき乗で除算する必要があります。ワード・アドレッサブル・メモリは、2の2乗以外の要因でスケールする必要がほとんどないと考えていましたが、メモリを効率的に使用しようとするソフトウェアにとってはそうではないかもしれません。 –
- 1. どのような場合にメモリがバイトまたはワードでアドレス可能なのですか?なぜ
- 2. なぜ空のテキストファイルに3バイトが含まれていますか?
- 3. amrオーディオファイルのバイトに `# '文字が含まれていますか?
- 4. リフレクトパッケージに「バイト」の種類がないのはなぜですか?
- 5. アスキー文字は8バイト、変換されたワードは32バイトにどのように格納されますか
- 6. なぜ私のバイトでHaskell/Unpackが乱れているのですか?
- 7. この配列はメモリ内で何バイト占有していますか?
- 8. R 2.14バイトのコンパイル - なぜですか?
- 9. メモリ内の最初のバイトは何ですか?
- 10. Cのメモリ内のXORバイトはどうですか?
- 11. ペイロード4096バイトにregistration_idの長さが含まれていますか?
- 12. クライアントがバイトを受信しないのはなぜですか?
- 13. ラズベリー・パイ3メモリ・バイト・アドレス可能かワード・アドレス可能かワード・アドレス可能ならワードサイズは
- 14. 復号化では32バイトではなく16バイトが返されますが、なぜですか?
- 15. メモリにアセンブルされたアセンブリオブジェクトからバイト[]
- 16. バイトを割り当てるメモリが不足しています
- 17. なぜvar_dumpにnullバイトが表示されないのですか?
- 18. 私は数バイトのリークがあります - なぜですか?
- 19. BizTalkメッセージ '<MessageName>'の 'part'に0バイトのデータが含まれています
- 20. なぜ2番は2バイトのスペースではなく1バイトを使用していますか?
- 21. PNGバイトが異なるのはなぜですか?
- 22. バイト配列コピーでメモリが増えています
- 23. ARM Cortex-A8:1つのメモリに読み込まれるバイト数は何バイトですか?
- 24. 私のプログラムは、バイト配列の1.5Gbのメモリを保持しているのはなぜですか?
- 25. なぜUTF-32が4バイトを使用するのですか?
- 26. 「hello」という単語のみを含むテキストファイルのサイズが6バイトで、5バイトではないのはなぜですか?
- 27. ダウンロードしたイメージのドキュメントディレクトリに0バイトが含まれています
- 28. libccv - メモリ内のバイトからイメージを読み取る方法
- 29. バイト割り当てのメモリ不足エラー?
- 30. pcapなぜ8バイトのパケット...なぜですか?
2の累乗は、単純なビットシフトがバイトアドレスなどを計算するのに十分であることを意味します。 –
一部のアーキテクチャでは、2の累乗以外のサイズをロードまたは格納するいくつかの命令があります。例えばx87の内部80ビット浮動フォーマットは、[FLD](http://www.felixcloutier.com/x86/FLD.html)と[FSTP](http://www.felixcloutier。 com/x86/FST:FSTP.html)。 x86メモリ - 間接的に32ビットモードで2 + 4バイトをロードします。しかし、これらは例外ではなく、ルールではありません。 –