応用情報技術者 2019年 春期 午前2 問01
問題文
0以上255以下の整数に対して、
と定義する。と等しい式はどれか。ここで、 AND 及び OR は、それぞれとを2進数表現にして、桁ごとの論理積及び論理和をとったものとする。
選択肢
ア:(n+1) AND 255(正解)
イ:(n+1) AND 256
ウ:(n+1) OR 255
エ:(n+1) OR 256
0以上255以下の整数のnext関数の論理演算による表現【午前2 解説】
要点まとめ
- 結論:はを255でビットANDした式、すなわちと等しいです。
- 根拠:が255のときですが、255は8ビットの全ビット1()なのでAND演算で256は0に戻ります。
- 差がつくポイント:ビット演算のマスクとして255()を使うことで、0〜255の範囲に自然に循環することを理解できるかが鍵です。
正解の理由
選択肢アのは、の下位8ビットだけを取り出す操作です。
- のとき、は255以下なのでそのまま値が返ります。
- のとき、は2進数でとなり、下位8ビットはすべて0なので結果は0になります。
これが問題文の定義と完全に一致します。
よくある誤解
- 256でANDすると常に0になるため意味がありません。
- OR演算はビットを立てる操作なので、の循環性を表現できません。
解法ステップ
- 問題の関数定義を理解する:は0〜255の範囲で1ずつ増加し、255の次は0に戻る。
- 2進数での表現を考える:255は8ビットすべて1の数値。
- の値が256になる場合を考慮し、下位8ビットだけを取り出す方法を検討。
- AND演算で255をマスクすることで、下位8ビットを抽出できることを確認。
- 選択肢の中でこの条件を満たすのはのみ。
選択肢別の誤答解説
- イ: は256のビット位置のみを抽出するため、が256のときだけ1、それ以外は0となり不適。
- ウ: は常に255以上の値になり、の定義と異なる。
- エ: は256のビットを常に立てるため、範囲外の値を返し誤り。
補足コラム
ビット演算のANDはマスク処理に使われ、特定のビットだけを抽出するのに便利です。255は8ビットすべて1のため、8ビットの範囲内で値を制限するマスクとしてよく使われます。これにより、オーバーフロー時の循環処理を簡潔に表現できます。
FAQ
Q: なぜ255を使うのですか?
A: 255は8ビットすべて1の2進数で、AND演算で下位8ビットだけを抽出できるため、0〜255の範囲に値を制限できます。
A: 255は8ビットすべて1の2進数で、AND演算で下位8ビットだけを抽出できるため、0〜255の範囲に値を制限できます。
Q: OR演算ではなぜダメなのですか?
A: OR演算はビットを立てる操作なので、値を増やす・循環させる処理には向かず、範囲外の値を返すことがあります。
A: OR演算はビットを立てる操作なので、値を増やす・循環させる処理には向かず、範囲外の値を返すことがあります。
関連キーワード: ビット演算、マスク処理、論理積、循環カウンタ、8ビット制限

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

