応用情報技術者 2011年 春期 午前2 問11
問題文
主記憶の 1000番地から、表のように4バイトの整数データが格納されている。これを32ビットのレジスタにロードするとき、プロセッサのエンディアンとレジスタにロードされる数値との組合せとして、正しいものはどれか。


選択肢
ア:
イ:
ウ:
エ:(正解)
主記憶の整数データとエンディアンの関係【午前2 解説】
要点まとめ
- 結論:主記憶のバイト並びが「00 01 02 03」の場合、リトルエンディアンは「03020100」、ビッグエンディアンは「00010203」となるため、正解はエです。
- 根拠:リトルエンディアンは最下位バイトを先頭に、ビッグエンディアンは最上位バイトを先頭にレジスタにロードする方式です。
- 差がつくポイント:エンディアンの違いを正確に理解し、バイトアドレスとデータの対応関係を正しく把握できるかが重要です。
正解の理由
主記憶の1000番地から順に「00」「01」「02」「03」と4バイトが格納されています。
- ビッグエンディアンはアドレスの小さい方から順に上位バイトを配置するため、レジスタには「00 01 02 03」とそのまま入ります。
- リトルエンディアンはアドレスの小さい方から順に下位バイトを配置するため、レジスタには「03 02 01 00」と逆順に入ります。
選択肢エのリトルエンディアン「03020100」とビッグエンディアン「00010203」がこれに合致します。
よくある誤解
エンディアンは単にバイトの並び順の違いであり、数値の大小や意味が変わるわけではありません。
また、アドレス順とデータの並びを混同しやすい点に注意が必要です。
また、アドレス順とデータの並びを混同しやすい点に注意が必要です。
解法ステップ
- 主記憶のバイトアドレスとデータの対応を確認する(1000→00、1001→01、…)。
- ビッグエンディアンの定義を理解し、上位バイトから順にレジスタにロードすることを確認。
- リトルエンディアンの定義を理解し、下位バイトから順にレジスタにロードすることを確認。
- それぞれの方式でレジスタに入るデータ列を作成する。
- 選択肢の中から該当する組み合わせを選ぶ。
選択肢別の誤答解説
- ア:リトルエンディアンが「00010203」となっており、これはビッグエンディアンの並び。ビッグエンディアンの方も誤り。
- イ:ビッグエンディアンが「03020100」となっており、これはリトルエンディアンの並び。逆転している。
- ウ:リトルエンディアンが「02030001」となっており、バイト順が正しくない。
- エ:リトルエンディアン「03020100」、ビッグエンディアン「00010203」で正しい。
補足コラム
エンディアンはCPUアーキテクチャや通信プロトコルで重要な概念です。
- ビッグエンディアンはネットワークバイトオーダーとして標準化されているため、通信時に多用されます。
- リトルエンディアンはIntel系CPUで採用されており、主にPCで使われています。
理解しておくとデータの解釈ミスを防げます。
FAQ
Q: エンディアンはなぜ存在するのですか?
A: CPUの設計思想や歴史的背景により、データのバイト並び順が異なるためです。互換性のために理解が必要です。
A: CPUの設計思想や歴史的背景により、データのバイト並び順が異なるためです。互換性のために理解が必要です。
Q: 32ビット整数以外でもエンディアンは関係ありますか?
A: はい。16ビットや64ビットのデータでもバイト順の違いが影響します。
A: はい。16ビットや64ビットのデータでもバイト順の違いが影響します。
Q: エンディアンを変換する方法はありますか?
A: はい。ソフトウェアでバイトの並びを入れ替えることで変換可能です。
A: はい。ソフトウェアでバイトの並びを入れ替えることで変換可能です。
関連キーワード: エンディアン、リトルエンディアン、ビッグエンディアン、主記憶、バイトオーダー、CPUアーキテクチャ

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

