マナビング基本情報技術者

8ビットの全ビット反転をどう見極める?

基本情報技術者試験 令和元年度秋期 午前 問2 / 基礎理論 › 離散数学

過去問にチャレンジ

令和元年度秋期 午前 問2

8ビットの値の全ビットを反転する操作はどれか。

  1. ア

    16進表記 00 のビット列と排他的論理和をとる。

  2. イ

    16進表記 00 のビット列と論理和をとる。

  3. ウ

    16進表記 FF のビット列と排他的論理和をとる。

  4. エ

    16進表記 FF のビット列と論理和をとる。

会話形式の解説

講師講師
全ビットを反転するには、元が0なら1、元が1なら0になる必要があります。各演算を両方の場合で確かめましょう。
受験者受験者
00との排他的論理和では、相手のビットはすべて0です。これで値は変わりますか。
講師講師
排他的論理和は、二つのビットが異なるときに1になります。0と組み合わせると、元が0なら0、1なら1のままです。
受験者受験者
00との論理和も、元の値のままになりそうです。
講師講師
そのとおりです。論理和は、どちらかが1なら結果が1です。相手が0なら、元が0でも1でも値は変わりません。
受験者受験者
FFは全ビットが1ですね。論理和をとると、元の値にかかわらず全部1になりますか。
講師講師
はい。元が1のビットは1のままなので、全ビットの反転にはなりません。
受験者受験者
では、FFとの排他的論理和なら、元が0のビットは1になりそうです。元が1の場合はどうですか。
講師講師
1と1は同じなので、排他的論理和の結果は0です。0は1に、1は0になるため、FFとの排他的論理和が正解です。
受験者受験者
00との演算は値が変わらず、FFとの論理和は全部1になります。反転になるかは、元が0と1の両方で確かめればよいのですね。
講師講師
はい。ビット演算では、対応するビット同士を比べ、0の場合と1の場合の結果を確認すると判断できます。

まとめ

全ビットの反転では、元が0なら1、元が1なら0になる必要があります。FFは8ビットすべてが1なので、FFとの排他的論理和がこの条件を満たします。00との排他的論理和・論理和は元の値を変えず、FFとの論理和は結果をすべて1にします。

解答・解説

正解はウです

この問題のテーマ

8ビットの値について、各ビットの0と1を入れ替える演算を選ぶ問題です。

解き方の考え方

全ビットを反転するには、元のビットが0でも1でも、演算後に反対の値になる必要があります。各選択肢の演算を、元のビットが0の場合と1の場合の両方で確かめます。

選択肢ごとの解説

  1. ×ア  16進表記 00 のビット列と排他的論理和をとる。
    00との排他的論理和では、各ビットを0と比較します。元のビットが0でも1でも値は変わらないため、反転できません。
  2. ×イ  16進表記 00 のビット列と論理和をとる。
    00との論理和では、相手の各ビットが0です。演算後も元の値のままなので、全ビットの反転にはなりません。
  3. ○ウ  16進表記 FF のビット列と排他的論理和をとる。
    FFは8ビットすべてが1の値です。これと排他的論理和をとると、元の0は1に、元の1は0になり、全ビットが反転します。
  4. ×エ  16進表記 FF のビット列と論理和をとる。
    FFとの論理和では、相手の各ビットが1です。結果は元の値にかかわらずすべて1となり、元が1だったビットは反転しません。

POINT

  • ビット演算は、対応するビット同士で結果を確かめます。
  • 排他的論理和は、二つのビットが異なるときに1になります。
  • 論理和は、二つのビットの少なくとも一方が1なら1になります。

※出典:令和元年度秋期 基本情報技術者試験 午前 問2