平成27年度秋期 応用情報技術者試験 午前 問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なので、AND 255は下位8ビットだけを取り出すマスク演算である。0≦n<255ではn+1は255以下なので(n+1) AND 255=n+1のまま、n=255ではn+1=256(2進数で100000000)となり下位8ビットは全て0なので結果は0になる。これはnext(n)の定義(n+1、ただし255の次は0)と一致する。 ア: 正解。AND 255は下位8ビットの抽出であり、256→0となって定義どおり循環する。mod 256と同じ働きである。 イ: AND 256は9ビット目だけを残すので、n=255のとき256、それ以外はほぼ0となり、定義と一致しない。 ウ: OR 255は下位8ビットを全て1にするため、結果は常に255になってしまう。 エ: OR 256は9ビット目を1にするため、結果はn+1+256(n<255のとき)となり一致しない。 💡 「ANDはマスク(必要なビットの抽出)、ORはビットを立てる」。2のべき乗−1(255=2^8−1)とのANDは、そのべき乗による剰余(mod 2^8)と同じ効果になる。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。