正解は ア
0以上255以下の整数nに対し、next(n)は0〜254では n+1、255では0を返す関数です。これは8ビット符号なし整数のインクリメントが255の次に0へ折り返す(mod 256で1を足す)挙動そのものです。各選択肢を検証します。nが0〜254のときn+1は1〜255で、255は2進数で11111111(8桁すべて1)なので、(n+1) AND 255 はn+1の下位8ビットをそのまま残し、n+1(=1〜255)に一致します。n=255のときn+1=256=100000000(9桁目が1)で、256 AND 255 は下位8ビットがすべて0なので0となり、定義どおり0が得られます。したがって(n+1) AND 255 が全範囲でnext(n)に一致し、選択肢aが正解です。ANDによる「255でのマスク」は、値を8ビットの範囲に丸める常套手段として頻出します。一般化すると「2のk乗で割った剰余=(2のk乗−1)とのAND」という関係が成り立ち、ビット演算で剰余を高速に求める基本テクニックとして覚えておくと有用です。
「値を8ビット(0〜255)の範囲に丸める=255とのAND」「mod 2のk乗=(2のk乗−1)とのAND」がビット演算の定番。ORはビットを立てる演算なので範囲制限には使えない。255=11111111、256=100000000の対比を押さえる。