ビット演算による循環加算処理の実現

正解は ア です。 255は2進数で 11111111 (下位8ビットがすべて1)です。 ・$0 \le n < 255$ のとき:$n+1$ は 1 以上 255 以下の範囲(8ビット以内)であるため、255 との AND をとっても値は変化せず $n+1$ のままとなります。 ・$n = 255$ のとき:$n+1 = 256$ となり、2進数では 100000000 (9ビット目が1で下位8ビットが0)となります。これと 255( 011111111 )との AND をとると、下位8ビットの 0 のみが残り結果は 0 にリセットされます。 したがって、 (n+1) AND 255 は $next(n)$ の定義と等しくなります。 n n+1(2進9桁) 255(2進9桁) (n+1) AND 255 5 0 0000 0110 0 1111 1111 0000 0110=6 254 0 1111 1111 0 1111 1111 1111 1111=255 255 1 0000 0000 0 1111 1111 0000 0000=0

0以上255以下の整数nnに対して,

next(n)={n+1(0≤n<255)0(n=255)next(n)=\begin{cases}n+1 & (0 \le n < 255)\\0 & (n=255)\end{cases}

と定義する。next(n)next(n)と等しい式はどれか。ここで,xANDyx\mathbin{\mathrm{AND}}y及びxORyx\mathbin{\mathrm{OR}}yは,それぞれxxとyyを2進数表現にして,桁ごとの論理積及び論理和をとったものとする。

出典令和5年度 春期 応用情報技術者試験 午前 問1
ア
(n+1) AND 255
イ
(n+1) AND 256
ウ
(n+1) OR 255
エ
(n+1) OR 256