平成23年度 秋期 午前 問1
基礎理論
2進数に関する問題
x は,0 以上 65,536 未満の整数である。x を 16 ビットの 2 進数で表現して上位 8 ビットと下位 8 ビットを入れ替える。得られたビット列を 2 進数とみなしたとき,その値を x を用いた式で表したものはどれか。ここで,a div b は a を b で割った商の整数部分を,a mod b は a を b で割った余りを表す。また,式の中の数値は 10 進法で表している。
- ア(x div 256)+(x mod 256)
- イ(x div 256)+(x mod 256)×256
- ウ(x div 256)×256+(x mod 256)
- エ(x div 256)×256+(x mod 256)×256
答えと解説を見る
✓ これが正解イ(x div 256)+(x mod 256)×256
解説
上位に置くほうだけを 256 倍します。
16 ビットの値を 8 ビットずつの二つに分けて考えます。下の 8 ビットぶんの重みは 256 なので、x を 256 で割った商が上の側、余りが下の側になります。つまり x は、上の側に 256 を掛けたものへ下の側を足した形に書けます。入れ替えるとは、この二つの置き場所を交換することです。ここで大事なのは、値を組み立てるときに 256 を掛けるのは上に来るほうだけだという点です。下に来るほうは、そのまま足します。交換した後は、もとの余りが上へ、もとの商が下へ移ります。ですから、もとの余りに 256 を掛け、もとの商をそのまま足した形が求める式になります。実際の数でも確かめられます。x が 4,660 のとき商は 18、余りは 52 で、入れ替えた後の値は 52 に 256 を掛けて 18 を足した 13,330 です。式を組むときは、どちらが上に来るかを先に決めてから重みを付ける、という順に進めると取り違えを避けられます。
ほかの選択肢はなぜ違うのか
- ア(x div 256)+(x mod 2…:商と余りのどちらにも重みを付けずに足した形です。先ほどの数では 18 と 52 を足した 70 となり、桁の位置がすっかり失われてしまうので、置き場所を交換した結果とは別のものになります。
- ウ(x div 256)×256+(x m…:商に 256 を掛けて余りを足す形で、これはもとの値を組み立て直しただけです。先ほどの数で計算すると 4,660 に戻り、交換が何も起きていないことが分かります。
- エ(x div 256)×256+(x m…:商と余りの両方に 256 を掛けた形です。先ほどの数では 4,608 と 13,312 を足した 17,920 となり、入れ替えた後の 13,330 と食い違います。下に来るはずの商まで上の位置に残っているためです。
出典:平成23年度 秋期 応用情報技術者試験 午前 問1
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)