今回は令和元年度 機械科目 A問題14を解説します。2進数AとBについて、その和A+B=(101010)2と差A-B=(1100)2が与えられたとき、Bの値を求める問題です。
2進数のまま連立方程式のように「和-差」を計算して2Bを求め、最後に2進数を1桁右シフト(÷2)してBを求めるのが最短ルートです。10進数に変換して検算すると確実です。
令和元年度 機械科目 A問題14:問題文と選択肢
まずは、実際の試験問題を確認してみましょう。

電験3種 機械科目 【情報】 令和元年度 A問題14
2進数AとBがある。それらの和がA+B=(101010)2,差がA-B=(1100)2であるとき,Bの値として,正しいものを次の(1)〜(5)のうちから一つ選べ。
(1)(1110)2 (2)(1111)2 (3)(10011)2 (4)(10101)2 (5)(11110)2
出題のポイント:和から差を引いて2Bを作る

A+BからA-Bを引くとAが消え、2Bが残ります。桁数をそろえて(101010)₂-(001100)₂=(011110)₂を計算し、1桁右シフトして2で割るとB=(001111)₂=(1111)₂です。最後に10進数へ直して検算すると、借りの誤りを見つけやすくなります。
ポイント解説:6桁をそろえて引き算・右シフトする

2進数のまま「和+差」「和-差」の連立方程式的な操作を行うと、10進数への変換を経由せずに直接計算できます。A+BとA-Bの差をとると2Bが求まり、そこから1桁右シフト(÷2)してBを得ます。
計算後は10進数に変換して検算すると、桁の繰り下がりミスがないか確実に確認できます。
問題の解説:10進数の和と差でも検算する

STEP1 ①式と②式を立てる
①式:A+B=(101010)2 ②式:A-B=(1100)2
STEP2 ①-②より2Bを求める
$$2B=(101010)_2-(001100)_2=(011110)_2$$
STEP3 2進数を1桁右シフトしてBを求める
2倍は2進数で1桁左シフトに対応するので,その逆操作でBを求めると,
$$B=(011110)_2\div(10)_2=(1111)_2$$
STEP4 10進数で検算する
(101010)2=42,(1100)2=12なので,2B=42-12=30,B=15=(1111)2。
STEP3の結果と一致するので,答えは(2)です。
答え:(2)
💡 覚え方
A+BとA-Bが与えられたら,2進数のまま引き算して2Bを求め,1桁右シフトでBを得るのが最速。10進変換での検算を忘れずに。
⚠️ よくある間違い
2進数の引き算で桁借りを間違えない。1桁右シフトを「10で割る」と混同せず,2進数における÷2の操作として正しく行うこと。
まとめ
| A+B | 101010(2) |
| A-B | 001100(2) |
| 2B | 011110(2) |
| B | 1111(2) |
| 答え | (2) |
▼あわせて解きたい関連問題
・ビット論理演算(ExOR・NOR・OR)から16進数へ:【機械】平成29年度A問題14
・AND・OR・EX-OR・NANDの4種論理演算と16進変換:【機械】平成21年度A問題14

コメント