平成31年度 春期 応用情報技術者試験 午前 問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進数表現にして,桁ごとの論理積及び論理和をとったものとする。
出典:平成31年度 春期 応用情報技術者試験 午前 問1
- ア(n+1) AND 255
- イ(n+1) AND 256
- ウ(n+1) OR 255
- エ(n+1) OR 256
正解:ア
解説
255は2進数で 11111111 であり,これとの論理積は下位8ビットだけを取り出すマスクとして働きます。0≦n<255 のとき n+1 は255以下なので (n+1) AND 255 は n+1 のままです。n=255 のときは n+1=256=100000000 となり,下位8ビットは全て0なので結果は0になります。したがって next(n)=(n+1) AND 255 が成り立ちます。
選択肢ごとの解説
- ア正しい。255(11111111)との論理積は下位8ビットを残すマスクとして働き,n=255 のときだけ結果が0になるので next(n) と一致します。
- イ誤り。256(100000000)との論理積は第9ビットだけを残すので,n<255 では結果が常に0となり n+1 になりません。
- ウ誤り。255との論理和は下位8ビットを全て1にするので,n の値によらず結果は常に255になってしまいます。
- エ誤り。256との論理和は第9ビットを1にするだけなので,n=0 のとき257,n=255 のとき256となり,どちらも next(n) と一致しません。