1

ビッグ エンディアン方式に従って 32 ビット ワードで構成されたバイト アドレス指定可能なメモリを備えたシステムを考えてみましょう。プログラムは、キーボードから入力された ASCII 文字を読み取り、位置 1000 から始まる連続したバイト位置に格納します。

johnson という名前が入力された後の位置 1000 と 1004 にある 2 つのメモリ ワードの内容を表示します。これをリトルエンディアン方式で記述します。

私が得たものは:

[ヌル、n]、[o、s]、[n、h]、[o、j] 00、6E 6F、73 6E、68 6F、6A

これが正しいかどうか、そうでない場合は、何が間違っていたかを知りたいだけです。

皆さん、ありがとうございました!

4

2 に答える 2

1

1 バイト (ASCII 文字など) を格納するためのエンディアンのようなものはありません。エンディアンは、値が複数のバイトとして表される場合にのみ機能します。たとえば、バイト シーケンスの格納はリトル エンディアンとビッグ エンディアンで同じですが、バイトの表現だけが異なります。たとえば、数値 3 735 928 559 (または 16 進数表記の 0xdeadbeef) を 32 ビット ワード (たとえば、int) としてメモリ位置 1000 に格納すると、次のようになります。

ADR: 1000 1001 1002 1004  
BE:   de   ad   be   ef  
LE:   ef   be   ad   de  

したがって、実際に ASCII 文字を 32 ビット ワードとして表すとしたら、次のようになります。

[0, 0, 0, 6a], [0, 0, 0, 6f], ... or,  
[6a, 0, 0, 0], [6f, 0, 0, 0], ...

それぞれ BE と LE 用です。

于 2013-05-19T05:57:50.630 に答える