応用情報技術者 2015年 春期 午前2 問21
問題文
16進数ABCD1234をリトルエンディアンで4バイトのメモリに配置したものはどれか。ここで、0〜+3はバイトアドレスのオフセット値である。

選択肢
ア:
イ:(正解)
ウ:
エ:
16進数ABCD1234をリトルエンディアンで4バイトのメモリに配置したものはどれか【午前2 解説】
要点まとめ
- 結論:リトルエンディアンでは下位バイト(最下位8ビット)からメモリの低位アドレスに順に配置するため、正解はイです。
- 根拠:16進数ABCD1234は4バイトで、各バイトは「AB」「CD」「12」「34」に分割され、リトルエンディアンは逆順に並べます。
- 差がつくポイント:エンディアンの概念を正確に理解し、バイト単位での並び替えを間違えないことが重要です。
正解の理由
リトルエンディアン方式は、数値の最下位バイト(LSB)をメモリの最小アドレス(オフセット0)に配置し、上位バイトに向かって順に配置します。
16進数ABCD1234は4バイトで、バイト単位に分けると「AB」「CD」「12」「34」ですが、16進数表記は左から上位バイトなので、正しくは「AB」(最上位バイト)、「CD」、「12」、「34」(最下位バイト)です。
リトルエンディアンではこれを逆順に並べるため、メモリのオフセット0に「34」、+1に「12」、+2に「CD」、+3に「AB」となり、選択肢イが正解です。
16進数ABCD1234は4バイトで、バイト単位に分けると「AB」「CD」「12」「34」ですが、16進数表記は左から上位バイトなので、正しくは「AB」(最上位バイト)、「CD」、「12」、「34」(最下位バイト)です。
リトルエンディアンではこれを逆順に並べるため、メモリのオフセット0に「34」、+1に「12」、+2に「CD」、+3に「AB」となり、選択肢イが正解です。
よくある誤解
- ビッグエンディアンとリトルエンディアンの違いを混同し、上位バイトから順に並べてしまう。
- 16進数の桁を1バイト単位で正しく区切らず、2桁ずつのバイト単位で考えない。
解法ステップ
- 16進数ABCD1234を4バイトに分割する(AB, CD, 12, 34)。
- 16進数表記は上位バイトから並んでいることを確認する。
- リトルエンディアンは最下位バイトからメモリの低位アドレスに配置するため、バイトの順序を逆にする。
- メモリのオフセット0に最下位バイト「34」を配置し、+1に「12」、+2に「CD」、+3に「AB」を配置する。
- 選択肢の中からこの並びに一致するものを選ぶ。
選択肢別の誤答解説
- ア:オフセット0に「12」となっており、リトルエンディアンの最下位バイト「34」が先頭に来ていないため誤り。
- イ:正解。リトルエンディアンの規則通り、最下位バイト「34」から順に配置されている。
- ウ:各バイトの16進数の桁が逆転しており、バイト単位の区切りも誤っているため誤り。
- エ:ビッグエンディアンの並びで、上位バイト「AB」がオフセット0に配置されているため誤り。
補足コラム
エンディアンとは、複数バイトで表現されるデータのバイト順序のことです。
- ビッグエンディアンは上位バイトを先頭に置く方式で、人間の読み方に近い。
- リトルエンディアンは下位バイトを先頭に置く方式で、Intel系CPUで採用されています。
この違いはデータの解釈や通信プロトコルで重要なため、正確に理解しておくことが必要です。
FAQ
Q: なぜリトルエンディアンは下位バイトから配置するのですか?
A: CPUの設計上、下位バイトからアクセスしやすくするためで、演算効率を高める目的があります。
A: CPUの設計上、下位バイトからアクセスしやすくするためで、演算効率を高める目的があります。
Q: 16進数をバイト単位に分割する際のポイントは?
A: 16進数2桁が1バイトに相当するため、2桁ずつ区切って考えることが重要です。
A: 16進数2桁が1バイトに相当するため、2桁ずつ区切って考えることが重要です。
Q: エンディアンの違いはどのような場面で問題になりますか?
A: 異なるエンディアンのシステム間でデータをやり取りする際や、ファイルフォーマットの解釈時に問題となります。
A: 異なるエンディアンのシステム間でデータをやり取りする際や、ファイルフォーマットの解釈時に問題となります。
関連キーワード: リトルエンディアン、バイト順序、メモリ配置、16進数、エンディアン、バイトオーダー、CPUアーキテクチャ

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

