令和元年度 秋期 午前 問2
離散数学
8ビットの値の全ビットを反転する操作はどれか。
- ア16進表記 00 のビット列と排他的論理和をとる。
- イ16進表記 00 のビット列と論理和をとる。
- ウ16進表記 FF のビット列と排他的論理和をとる。
- エ16進表記 FF のビット列と論理和をとる。
答えと解説を見る
✓ これが正解ウ16進表記 FF のビット列と排他的論理和をとる。
解説
すべての桁が立った並びとの排他的論理和で反転します。
排他的論理和は、二つの桁が違うときだけ1を返し、そろっているときは0を返す演算です。この性質は、片方を固定して眺め直すと使い道がはっきりします。相手側を1にしておくと、元が0なら答えは1、元が1なら答えは0となり、必ず裏返ります。相手側が0の桁では、元の値がそのまま素通しで残ります。つまり相手側のうち1を立てた桁だけを、狙って反転できるわけです。今回は八つの桁を残らず裏返したいのですから、相手側は八つとも1の並びになります。16進の一桁は4ビットにあたるので、二桁とも最大の文字にすれば八つの1がそろいます。どの桁を1にするかで反転する場所を選べる道具だ、と覚えておくと応用が利きます。論理和との違いも、この素通しの性質で説明が付きます。目的から相手側を組み立てる順で考えると迷いません。
ほかの選択肢はなぜ違うのか
- ア16進表記 00 のビット列と排他的論理…:相手側が八つとも0なので、違いが出る桁が一つもありません。結果は元の並びがそのまま残り、何も変わらないままです。値を変えずに通したいときには、むしろこの組合せを選びます。元の並びを保って次へ渡す場面は実際にあります。
- イ16進表記 00 のビット列と論理和をと…:論理和は片方でも1であれば1を返す演算です。相手側が八つとも0なら、答えは元の並びと同じものになります。演算の名前が違っても、この組合せでは結果まで同じになる点が引っかけです。途中で何をしているかはまるで違います。
- エ16進表記 FF のビット列と論理和をと…:論理和で相手側を八つとも1にすると、元が何であっても答えは八つとも1です。元の情報は残らず消えてしまうので、反転ではなく塗りつぶしにあたります。桁をそろえて埋めたいときに使う組合せだと整理しておきます。元へは戻せません。
出典:令和元年度 秋期 基本情報技術者試験 午前 問2
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)