情報26【電験3種 機械】AND・OR・EX-OR・NANDの4種論理演算と16進変換!平成21年度 A問題14 完全解説

電験3種 機械科目 情報 平成21年度 A問題14 4種類の論理演算を実行!結果を16進数で表す

今回は平成21年度 機械科目 A問題14を解説します。2進数A=(1100 0011)2,B=(1010 0101)2について、論理積(AND)・論理和(OR)・排他的論理和(EX-OR)・否定的論理積(NAND)という4種類のビット演算を行い、それぞれを16進数で表す穴埋め問題です。

情報24と同系統のビット論理演算問題ですが、扱う演算がAND/OR/EX-OR/NANDの4種であり、4つの空欄すべてに数値が入る形式です。各ビット桁を丁寧に演算してから4桁ごとに16進数へ変換します。

目次

平成21年度 機械科目 A問題14:問題文と選択肢

まずは、実際の試験問題を確認してみましょう。

電験3種 機械科目 情報 平成21年度 A問題14 問題文
平成21年度 機械科目 A問題14 問題文

出典:一般財団法人 電気技術者試験センター「平成21年度 第三種電気主任技術者試験」機械科目 A問題14

電験3種 機械科目 【情報】 平成21年度 A問題14

 2進数A,Bが,A=(1100 0011)2,B=(1010 0101)2であるとき,AとBのビットごとの論理演算を考える。AとBの論理積(AND)を16進数で表すと(ア),AとBの論理和(OR)を16進数で表すと(イ),AとBの排他的論理和(EX-OR)を16進数で表すと(ウ),AとBの否定的論理積(NAND)を16進数で表すと(エ)となる。

 上記の記述中の空白箇所(ア),(イ),(ウ)及び(エ)に当てはまる数値として,正しいものを組み合わせたのは次のうちどれか。

(ア)(イ)(ウ)(エ)
(1)(81)16(E7)16(66)16(18)16
(2)(81)16(E7)16(66)16(7E)16
(3)(81)16(E7)16(99)16(18)16
(4)(E7)16(81)16(66)16(7E)16
(5)(E7)16(81)16(99)16(18)16

出題のポイント:4種類を桁ごとに処理する

8桁の2進数どうしで4種類の演算——桁をそろえて縦に並べるのが確実です。A=11000011、B=10100101 を書き出しましょう。

演算結果(2進数)16進数1 になる条件
AND1000000181両方1
OR11100111E7どちらか1
EX-OR0110011066★異なる
NAND01111110★7EAND の否定

NAND は AND の全ビット反転——10000001 を反転すれば01111110改めて計算し直す必要はありません

\( (1000\,0001)_2=(81)_{16} \)
AND を16進数に
1000=8、0001=1
\( (0111\,1110)_2=(7\mathrm{E})_{16} \)
NAND を16進数に
★0111=7、1110=E
AND、OR、EX-OR、NANDの2入力真理値表
NANDはANDの否定であり、NORとは異なります。
各8ビット結果を4ビットずつ区切って16進数へ変換する解答図
1000|0001は81、1110|0111はE7、0110|0110は66、0111|1110は7Eです。
答え(ア)81 (イ)E7 (ウ)66 (エ)7E——正解は (2)です。

⚠️ よくある間違い
(エ)を18 としている選択肢4桁ずつの並びを逆にしたもの——01111110 は「7」「E」の順で、「1」「8」ではありません
(ウ)を99 としている選択肢EX-OR とEX-NOR を取り違えたもの。01100110(66)の反転が10011001(99)——「異なるとき1」か「一致するとき1」かを確認してください。
(ア)(イ)を入れ替えた選択肢もあります。AND は1 が少なく、OR は1 が多い——81 と E7 なら、E7 のほうが1 が多いのでOR だと判断できます。

演算どうしの関係を使って検算する

4つの結果には、互いに関係があります。それを使えば計算が正しいか確かめられるのです。

関係本問での確認
NAND は AND の否定NAND=(AND)‾81+7E=FF
AND と OR と EX-OR★OR=AND+EX-OR81+66=E7
全ビットAND と NAND を足すと全部1FF=11111111

「OR=AND+EX-OR」という関係が便利です。OR は「どちらか1」、AND は「両方1」、EX-OR は「一方だけ1」——「どちらか1」=「両方1」+「一方だけ1」 だからです。

本問なら 81+66=E7——16進数の足し算で確かめられます8+6=E、1+6=7 で桁上がりもなく一致します。

3つのうち2つ計算すれば、残り1つは検算に使える——時間があれば必ず確かめてください

8桁2進数の扱いに慣れる

8桁=1バイト——16進数なら2桁で表せます上位4桁と下位4桁に分けて考えるのが基本です。

2進数(8桁)上位4桁下位4桁16進数
11000011(A)1100=C0011=3C3
10100101(B)1010=A0101=5A5

問題文が「1100 0011」と4桁ずつ区切って書いているのは、16進数への変換を意識させるためです。区切りに従って読めば、変換は機械的に進みます。

A=C3、B=A5 と16進数で書いてから演算するという手もありますが、ビット演算は2進数のまま行うほうが確実——16進数のまま論理演算はできません

⏱️ 本番での進め方
① A と B を桁をそろえて縦に並べる。
② AND→OR→EX-OR の順に計算。NAND はAND の反転。
③ 4桁ずつ区切って16進数へ。0111=7、1110=E。
④★検算:OR=AND+EX-OR、AND+NAND=FF。

💡 覚え方
「NAND はAND を反転するだけ」——計算し直さないそして「OR=AND+EX-OR」——3つの関係を使えば検算できます

2進数AとBに4種類のビット演算を行った2進結果と16進結果の一覧
AND=81、OR=E7、EX-OR=66、NAND=7Eです。

ビット演算の真理値表を作っておく

4種類の演算を、1つの表にまとめて覚えておくと速くなります。2入力の組合せは4通りだけです。

ABANDOREX-ORNAND
000001
0101★11
1001★11
11110★0

EX-OR は真ん中の2行だけが1——「入力が違う」ときですNAND は最後の1行だけが0——「両方1」のときだけになります。

この表を頭に入れておけば、8桁でも機械的に処理できます——桁ごとに表を引くだけだからです。

16進数への変換で間違えないコツ

8桁の2進数を16進数にするとき、区切りを間違えないこと——必ず4桁ずつ、上位と下位に分けるのが手順です。

本問のNAND=01111110 なら、0111 と11100111=4+2+1=7、1110=8+4+2=14=E——よって7E です。

「1110」と「0111」を混同するのが最も多い誤りです。左が上位、右が下位——読む向きを間違えると18 になってしまいます

2進数8桁を扱う感覚

8桁の2進数=1バイト——0〜255 の256通りを表せます。16進数なら2桁で書けるので扱いやすくなります。

2進数16進数10進数特徴
00000000000全部0
11111111FF255★全部1
1000000080128最上位だけ1
011111117F127最上位以外1

FF=255 は覚えておくと便利——本問でも AND+NAND=FF という検算に使えました。

80 と7F が隣り合っているのも押さえどころ。符号付きで扱えば、この境目で正負が入れ替わる——127 の次が−128 になります。

まとめ

(ア) AND(81)16
(イ) OR(E7)16
(ウ) EX-OR(66)16
(エ) NAND(7E)16
答え(2)

▼あわせて解きたい関連問題
・ビット論理演算(ExOR・NOR・OR)から16進数へ:【機械】平成29年度A問題14
・2進数の和と差からBの値を求める連立方程式:【機械】令和元年度A問題14

📚 次に解くべき関連問題
【機械】令和元年度A問題14(情報25)
【機械】平成29年度A問題14(情報24)
【機械】令和6年度上期B問題18(情報27)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次