応用情報技術者 2011年 秋期 午前2 問01
問題文
は、0以上65,536未満の整数である。を16ビットの2進数で表現して上位8ビットと下位8ビットを入れ替える。得られたビット列を2進数とみなしたとき、その値をを用いた式で表したものはどれか。ここで、はをで割った商の整数部分を、はをで割った余りを表す。また、式の中の数値は10進法で表している。
選択肢
ア:( div 256)+( mod 256)
イ:( div 256)+( mod 256)×256(正解)
ウ:( div 256)×256+( mod 256)
エ:( div 256)×256+( mod 256)×256
16ビット整数の上位・下位8ビット入れ替え【午前2 解説】
要点まとめ
- 結論:16ビット整数の上位8ビットと下位8ビットを入れ替える式は「( div 256) + ( mod 256) × 256」で表せます。
- 根拠:を16ビットで表すと、上位8ビットは div 256、下位8ビットは mod 256で分解可能です。
- 差がつくポイント:ビット操作の理解と、商と余りの役割を正しく把握し、入れ替え後の重み付けを間違えないことが重要です。
正解の理由
は16ビット整数なので、と表せます。
ここで、上位8ビットは、下位8ビットはです。
上位8ビットと下位8ビットを入れ替えると、下位8ビットが上位に、上位8ビットが下位に移動します。
つまり、入れ替え後の値は「(下位8ビット) × 256 + (上位8ビット)」となり、式は「( mod 256) × 256 + ( div 256)」です。
選択肢の中でこれに該当するのはイ: ( div 256) + ( mod 256)×256です。
ここで、上位8ビットは、下位8ビットはです。
上位8ビットと下位8ビットを入れ替えると、下位8ビットが上位に、上位8ビットが下位に移動します。
つまり、入れ替え後の値は「(下位8ビット) × 256 + (上位8ビット)」となり、式は「( mod 256) × 256 + ( div 256)」です。
選択肢の中でこれに該当するのはイ: ( div 256) + ( mod 256)×256です。
よくある誤解
- 「div」と「mod」の役割を逆に考え、上位・下位ビットの位置を間違えることがあります。
- 256を掛ける部分を誤って両方に掛けてしまうミスも多いです。
解法ステップ
- を16ビットの上位8ビットと下位8ビットに分解する。
- 上位8ビットは、下位8ビットはで求める。
- 入れ替え後は下位8ビットが上位に、上位8ビットが下位に移動することを理解する。
- 式にすると「(下位8ビット) × 256 + (上位8ビット)」となる。
- 選択肢の中からこれに合致するものを選ぶ。
選択肢別の誤答解説
- ア: ( div 256) + ( mod 256)
→ 上位・下位の重み付けが逆で、単純な足し算になっており入れ替えを表していません。 - イ: ( div 256) + ( mod 256)×256
→ 正解。下位8ビットを上位に、上位8ビットを下位に移動させる式です。 - ウ: ( div 256)×256 + ( mod 256)
→ 元のの表現そのままで、入れ替えをしていません。 - エ: ( div 256)×256 + ( mod 256)×256
→ 両方に256を掛けており、16ビットの範囲を超える誤った計算です。
補足コラム
16ビット整数のビット操作は、組み込み系やネットワーク処理で頻出します。
特に「ビッグエンディアン」と「リトルエンディアン」の違いは、上位・下位バイトの並び順の違いであり、今回の問題はその基礎理解に役立ちます。
また、ビットシフト演算を使うとより効率的に処理できます。
特に「ビッグエンディアン」と「リトルエンディアン」の違いは、上位・下位バイトの並び順の違いであり、今回の問題はその基礎理解に役立ちます。
また、ビットシフト演算を使うとより効率的に処理できます。
FAQ
Q: なぜ256で割るのですか?
A: 256はで、16ビットのうち上位8ビットを取り出すために使います。
A: 256はで、16ビットのうち上位8ビットを取り出すために使います。
Q: 「div」と「mod」の違いは何ですか?
A: 「div」は割り算の商の整数部分、「mod」は割り算の余りを表します。
A: 「div」は割り算の商の整数部分、「mod」は割り算の余りを表します。
Q: ビットシフトで同じ処理はできますか?
A: はい、例えば「(x & 0xFF) << 8 | (x >> 8)」で同様の入れ替えが可能です。
A: はい、例えば「(x & 0xFF) << 8 | (x >> 8)」で同様の入れ替えが可能です。
関連キーワード: 16ビット整数、ビット操作、商と余り、バイト入れ替え、ビッグエンディアン、リトルエンディアン

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

