テーマ:定義された関数と等しい式
正解はこちら
解答:ア
[基礎知識・用語のまとめ]
論理和(x OR y)・・・論理演算の一つで、2つの命題(xとy)のいずれかが真の場合は真となり、それ以外の場合は偽となる式を指します。ここでいう真とは1を指し、偽は0を指します。日本語表現では、「xまたはy」と呼称されることもあります。
論理積(x AND y)・・・論理演算の一つで、2つの命題(xとy)がいずれも真の場合は真となり、それ以外の場合は偽となる式を指します。ここでいう真とは1を指し、偽は0を指します。日本語表現では、「xかつy」と呼称されることもあります。
[解法]
next(n)と等しい式の結果は、0≦n<255のときn+1、n=255のときに0となります。
したがって、まずn=0の時は1になり、n<255の間はnに1加算した答えが求められるものでなくてはなりません。選択肢の論理式はすべて、論理演算子(ANDやOR)の左側が(n+1)であり、0≦n<255のときには、この左側の値がそのまま演算結果となる論理式が必要であることがわかります。一方、論理演算子の右側は255、256でありますが、これらを2進数表現でそれぞれ表すと011111111,100000000であり、ANDやORをとったときに左側の値(0≦n<255)がそのまま演算結果となるのは、xAND255の時だけです。
255を9ビットで表現すると011111111となり、先頭の0に続きて1が8ビットなら美見ます。よって、n+1が8ビットで表現できる255以下であれば、(n+1)AND255=n+1となり、n+1が256になると(n+1)AND255=0となります。したがって、選択肢「ア」の場合に、(n+1)AND255は、0≦n<255のときn+1,n=255のとき0となり、正解であることがわかります。
[参考]
0=(=(000000000)2)や255=(=(011111111)2)という特徴的な値を選んで、論理式の結果を求めても正解を求めることができる、、、らしい。
利用させていただきました素材へのリンク
うさちゃこちゃんねる様 https://www.youtube.com/channel/UCQcDdg4W6r5OfcB1JTcpABw
コメント