基本情報技術者試験 論理演算(平成30年秋期 問2)

平成30年秋期 問2
次に示す手順は,列中の少なくとも一つは1であるビット列が与えられたとき,最も右にある1を残し,他のビットを全て0にするアルゴリズムである。例えば,00101000が与えられたとき,00001000が求まる。[ a ]に入る論理演算はどれか。
手順1
与えられたビット列Aを符号なしの2進数と見なし,Aから1を引き,結果をBとする。
手順2
AとBの排他的論理和(XOR)を求め,結果をCとする。
手順3
AとCの[ a ]を求め,結果を[ A ]とする。

https://www.fe-siken.com/fekakomon.php

手順1 Aから1を引き,結果をBとする。

00101000 – 1 = 00100111

B = 00100111

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

XOR : 排他的論理和
とは、「AあるいはBの論理和以外認めない」=「AもBも正/AもBも偽 の場合を除外したもの」です。
ベン図で書くとこうなります。

今回は、
AかBどちらかの結果が1の場合は1
AとBの答えが揃っているものは0
と考えます。

[ A ]00101000
[ B ]00100111

表に変換すると……↓

A00101000
B00100111
C00001111

C = 00001111

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

AとCは00101000 と 00001111 です。
問題文を見てみると、「00001000が求まる」とあるため、結果が「00001000」となればOKです。

AとCを比べてみます。

A00101000
C00001111
結果00001000

AとCを見比べてみると、「AC両方が1の場合」に1とすると、結果が00001000になります。
「両方が1の場合」となるのは、論理積(AND)のときです。

答え ウ 論理積(AND)

参考:http://www.cc.kyoto-su.ac.jp/~yamada/ap/xor.html

タイトルとURLをコピーしました