基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [平成31年春午前] [平成31年春午後]

平成27年 春期 基本情報技術者 午前 問01
問01   ビットを全て0にする論理演算

 次に示す手順は,列中の少なくとも一つは1であるビット列が与えられたとき, 最も右にある1を残し,他のビットを全て0にするアルゴリズムである。 例えば,00101000 が与えられたとき,00001000 が求まる。 a に入る論理演算はどれか。

手順1 与えられたビット列 A を符号なしの2進数と見なし,A から1を引き,結果を B とする。

手順2 A と B の排他的論理和( XOR )を求め,結果を C とする。

手順3 A と C の を求め,結果を A とする。

ア 排他的論理和( XOR )     イ 否定論理積( NAND )

ウ 論理積( AND )          エ 論理和( OR )


解答←クリックすると正解が表示されます

解説

 ビット列Aが、00101000 の場合を例に説明する。

手順1 最初のビット列から1を引くことにより、最も右にある1の位置は0になり、最も右にある1の右側の全てのビットを1にすることができる。 最も右にある1の左側のビットは最初のビット列と同じ(変化しない)。

  00101000(最初のビット列)
- 00000001(1のビット列)
-----------
  00100111(1を引いたビット列)

手順2 最も右にある1の左側は最初のビット列と同じ(1は1、0は0)なので、XORをとると全て0になる。 最も右にある1は0になり、その右側は0から1に反転しているので、XORをとると全て1になる。

  00101000(最初のビット列)
  00100111(1を引いたビット列)
-----------
  00001111(XORの結果)

手順3 最初のビット列と AND をとることにより、最も右にある1を残し,ほかのビットをすべて0にすることができる。

  00101000(最初のビット列)
  00001111(XORの結果)
-----------
  00001000(ANDの結果)

【平成18年秋 問08】


[←前の問題] [次の問題→] [問題一覧表] [分野別] [キーワード索引] [基本情報技術者試験TOP ]