離散数学 (全108問中73問目)

No.73

8ビットで表される符号なし2進数xが16の倍数であるかどうかを調べる方法として,適切なものはどれか。
  • x と2進数 00001111 のビットごとの論理積をとった結果が0である。
  • x と2進数 00001111 のビットごとの論理和をとった結果が0である。
  • x と2進数 11110000 のビットごとの論理積をとった結果が0である。
  • x と2進数 11110000 のビットごとの論理和をとった結果が0である。

分類

テクノロジ系 » 基礎理論 » 離散数学

正解

解説

16の倍数ということは、xを16で割った時に余りが0になればよいわけです。
符号なし2進数では、最下位ビットから 1, 2, 4, 8, 16, 32, 64, 128…と各ビットが値をもっていて、最下位ビットから5ビット目以降はすべて16の倍数になっていることがわかります。つまり下位4ビットがすべて0であれば、xは16の倍数と判断できます。

あるビット列から任意の部分のビットを取り出したいときには、AND演算を使います。具体的には、取り出したい位置のビットを1、それ以外を0としたマスクビット列との論理積をとります。
この問題では、8ビットで表されるビット列の中で、下位4ビットの値をチェックしたいので、上位4ビット 0000 、下位4ビット 1111であるマスクビットと論理積を取り、取り出した下位4ビットの値が 0であれば、16の倍数であると判断できることになります。

下図に例としてすべての操作が、ビット列が16の倍数(ex.96)とそれ以外(ex.90)の時にそれぞれどのような結果になるのかを示しておきます。
03.gif/image-size:363×167
実際の計算結果からも、16の倍数の時に結果が0、余りが出る値では結果が1以上となる「ア」の演算が正しいことがわかります。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop