令和2年度 10月 午前Ⅱ 問2
メモリ
ビッグエンディアンの問題
ビッグエンディアン方式を採用しているCPUが,表のようにデータが格納された主記憶の1000番地から2バイトのデータを,16ビット長のレジスタにロードしたとき,レジスタの値はどれになるか。ここで,番地及びデータは全て16進表示である。
| 番地 | データ |
|---|---|
| 0FFE | FE |
| 0FFF | FF |
| 1000 | 00 |
| 1001 | 01 |
- ア0001
- イ00FF
- ウ0100
- エFF00
答えと解説を見る
✓ これが正解ア0001
解説
1000番地の00を上位、1001番地の01を下位に並べて0001です。
ビッグエンディアン方式では、複数バイトのデータを主記憶に置くとき、上位のバイトを小さい番地に格納します。読み出すときは、指定された番地のバイトを上位側、続く番地のバイトを下位側として並べます。この設問では1000番地から2バイトなので、1000番地の00が上位、1001番地の01が下位となり、レジスタの値は0001になります。リトルエンディアン方式なら上下が入れ替わって0100です。どの番地から読むのかと、小さい番地のバイトを上位に置くのか下位に置くのか、の2点を確かめれば答えが決まります。
ほかの選択肢はなぜ違うのか
- イ00FF:00FFは、0FFF番地から読み始め、0FFF番地のFFを下位、1000番地の00を上位として並べた値です。読み始める番地がずれているうえ、並べ方もリトルエンディアンになっています。
- ウ0100:0100は、1000番地の00を下位、1001番地の01を上位とした値で、リトルエンディアン方式で読んだ結果です。ビッグエンディアン方式では、小さい番地のバイトが上位側に来ます。
- エFF00:FF00は、0FFF番地から2バイトをビッグエンディアンで読んだ値で、FFが上位、00が下位になっています。並べ方は合っていますが、読み始める番地を1つ手前に取り違えています。
出典:令和2年度 10月 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問2
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)