平成22年度 春期 応用情報技術者試験 午前 問1
テクノロジ/基礎理論0以上255以下の整数 n に対して, next(n) = n+1 (0≦n<255のとき) next(n) = 0 (n=255のとき) と定義する。next(n)と等しい式はどれか。ここで,x AND y 及び x OR y は,それぞれ x と y を2進数表現にして,けたごとの論理積及び論理和をとったものとする。
出典:平成22年度 春期 応用情報技術者試験 午前 問1
- ア(n+1) AND 255
- イ(n+1) AND 256
- ウ(n+1) OR 255
- エ(n+1) OR 256
正解:ア
解説
next(n)はnが255未満ならn+1,n=255なら0を返す関数です。8ビットで考えると,n<255ではn+1は255以下の値のままAND 255をとっても変化せず,n=255のときはn+1=256(100000000₂)となり,255(011111111₂)とのAND演算によってちょうど0になります。したがって(n+1) AND 255はnext(n)と常に一致します。
選択肢ごとの解説
- ア正しい。n<255ではn+1はそのままAND 255の結果として保たれ,n=255のときはn+1=256とAND 255によって0になり,next(n)と一致します。
- イ誤り。256は9ビット目だけが1の値であり,255以下の値とのAND演算は常に0になってしまうため,next(n)の値を再現できません。
- ウ誤り。OR 255は結果の下位8ビットをすべて1にしてしまうため,n+1の値そのものを表せません。
- エ誤り。OR 256は9ビット目を常に1にしてしまい,n=255のときに0にならず余分なビットが残ります。