0 以上 255 以下の整数 n に対して,next(n) を,n+1(0≦n<255),0(n=255)と定義する。next(n)と等しい式はどれか。ここで,x AND y 及び x OR y は,それぞれ x と y を 2 進数表現にして,桁ごとの論理積及び論理和をとったものとする。
ア. (n+1) AND 255
8ビットで表せる 0〜255 の値を、255 の次に 0 へ戻す(循環させる)処理をビット演算で表現する問題です。255 は 2 進数で 11111111(下位8ビットがすべて1)なので、ある値と 255 の AND をとると下位8ビットだけが残り、9 ビット目以降は 0 で消えます。n=255 のとき n+1=256=100000000 ですが、これと 255 の AND は 00000000=0 となって正しく 0 に戻り、0〜254 のときは n+1 が 8 ビット内に収まるので値がそのまま残ります。したがって “(n+1) AND 255” が next(n) と一致します。
ap-2023r05h-a の過去問一覧へ戻る・問1