令和元年度 高度共通 午前I(PM試験) 問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進数表現にして,桁ごとの論理積及び論理和をとったものとする。

- ア (n+1) AND 255
- イ (n+1) AND 256
- ウ (n+1) OR 255
- エ (n+1) OR 256
解答・解説を見る
正解:ア
AI解説
255は2進数で11111111(8ビットすべて1)である。(n+1) AND 255は、n+1の下位8ビットだけを取り出すマスク演算になる。0≦n<255ではn+1は255以下なのでそのままn+1となり、n=255のときはn+1=256=100000000(2進)でAND 255の結果は0となる。これはnext(n)の定義(255の次は0に戻る)と完全に一致する。 ア: 正解。AND 255は下位8ビットのマスクとなり、256だけが0に丸められるため、next(n)と等しい。 イ: (n+1) AND 256は、n+1の第9ビット目だけを残す演算で、結果は0か256にしかならず不適切。 ウ: (n+1) OR 255は、下位8ビットをすべて1にするため結果は常に255(又は255超)となり不適切。 エ: (n+1) OR 256は、常に第9ビットが1になり結果が256以上となるため不適切。 💡 2^k-1(255,1023など)とのANDは「下位kビットの取り出し=2^kによる剰余」と同じ働きをする。カウンタのラップアラウンド(一周して0に戻る)処理の定石として覚えておく。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。