令和元年度春期 応用情報技術者試験 午前 問1
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
- イ (n+1) AND 256
- ウ (n+1) OR 255
- エ (n+1) OR 256
解答・解説を見る
正解:ア
AI解説
255は2進数で11111111(8ビット全て1)なので、AND 255は下位8ビットだけを取り出すマスク演算になる。0≦n<255ではn+1は255以下なのでそのまま残り、n=255のときはn+1=256=100000000(2進)となるが、AND 255で第9ビットが落ちて0になる。よって(n+1) AND 255は定義どおりnext(n)を与え、アが正しい。 ア: 正しい。AND 255による下位8ビット抽出で、256が0に折り返され、mod 256(256で割った余り)と同じ効果が得られる。 イ: (n+1) AND 256は第9ビットだけを残す演算であり、結果は0か256にしかならず、next(n)と一致しない。 ウ: (n+1) OR 255は下位8ビットを全て1にするため、結果は常に255(又は511)となり誤りである。 エ: (n+1) OR 256は常に第9ビットが立ち、結果が必ず256以上になるため誤りである。 💡 AND(2^k−1)=下位kビットの取り出し=mod 2^k、ORはビットを立てる操作、と覚える。境界値(n=255)を代入して検算するのが確実な解法である。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。