令和5年度 秋期 午前Ⅱ 問4
メモリ
ビッグエンディアンに関する問題
ビッグエンディアン方式を採用しているCPUが,表のようにデータが格納された主記憶の1000番地から2バイトのデータを,16ビット長のレジスタにロードしたとき,レジスタの値はどれになるか。ここで,番地及びデータは全て16進表示である。
| 番地 | データ |
|---|---|
| 0FFE | FE |
| 0FFF | FF |
| 1000 | 00 |
| 1001 | 01 |
- ア0001
- イ00FF
- ウ0100
- エFF00
答えと解説を見る
✓ これが正解ア0001
解説
ビッグエンディアンでは若い番地が上位バイトになり0001です。
ビッグエンディアン方式は、複数バイトのデータを主記憶に置くとき、上位のバイトを小さい番地に格納する方式です。1000番地から2バイト読むので、対象は1000番地の00と1001番地の01です。小さい番地の00が上位バイト、次の番地の01が下位バイトになり、レジスタの値は16進で0001になります。リトルエンディアン方式なら逆に、小さい番地が下位バイトになります。どこから何バイト読むかをまず確かめ、そのうえで小さい番地のバイトを上位と下位のどちらに置くかを決めると、迷わずに済みます。ビッグエンディアンは、番地順に左から書き並べた値がそのまま数値になると覚えると判断が速くなります。
ほかの選択肢はなぜ違うのか
- イ00FF:00FF は、0FFF番地のFFと1000番地の00の2バイトを、小さい番地を下位として並べた値です。読み始めの番地も、バイトの並べ方も問題の条件と違っています。
- ウ0100:0100 は、1000番地の00と1001番地の01を、小さい番地を下位バイトとして並べた値で、リトルエンディアン方式で読んだ結果に当たります。ビッグエンディアン方式とはバイト順が逆です。
- エFF00:FF00 は、0FFF番地のFFと1000番地の00を小さい番地を上位として並べた値です。バイト順はビッグエンディアンですが、読み始めの番地が1000番地ではなく、一つ手前になっています。
出典:令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問4
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)