今回は平成28年度 機械科目 A問題14を解説します。2進数を10進数に、10進数を2進数に、2進数を8進数に、16進数を2進数に、という4種類の基数変換を順に行う空所補充問題です。
2進数→10進数は各桁の重み(2の累乗)を足し合わせ、10進数→2進数は2で逐次除算して余りを下から並べます。2進数→8進数・16進数はそれぞれ3桁・4桁ずつ区切って変換するのが基本テクニックです。
平成28年度 機械科目 A問題14:問題文と選択肢
まずは、実際の試験問題を確認してみましょう。

出典:一般財団法人 電気技術者試験センター「平成28年度 第三種電気主任技術者試験」機械科目 A問題14
電験3種 機械科目 【情報】 平成28年度 A問題14
次の文章は,基数の変換に関する記述である。
・2進数00100100を10進数で表現すると(ア)である。
・10進数170を2進数で表現すると(イ)である。
・2進数111011100001を8進数で表現すると(ウ)である。
・16進数(エ)を2進数で表現すると11010111である。
上記の記述中の空白箇所(ア),(イ),(ウ)及び(エ)に当てはまる組合せとして,正しいものを次の(1)〜(5)のうちから一つ選べ。
(ア) (イ) (ウ) (エ) (1) 36 10101010 7321 D7 (2) 37 11010100 7341 C7 (3) 36 11010100 7341 D7 (4) 36 10101010 7341 D7 (5) 37 11010100 7321 C7
出題のポイント:4種類の変換を順にこなす
基数変換の基本4パターンが1問にまとまっています。1つずつ確実に処理すれば、選択肢は自然に絞れます。
| 空欄 | 変換 | 答え | やり方 |
| (ア) | 2進→10進 | 36 | 重みを足す |
| (イ) | 10進→2進 | 10101010 | 2で割って余りを並べる |
| (ウ) | 2進→8進 | 7341 | ★3桁ずつ区切る |
| (エ) | 16進→2進 | D7 | ★4桁ずつ区切る |

それぞれを計算する
1 が立つのは25と22
★大きい重みから引いていく
★下位から3桁ずつ
★下位から4桁ずつ。1101=D、0111=7
(イ)の170 は覚えやすい数です。10101010 という交互のパターン——128+32+8+2=170 になります。ちなみに01010101 なら85で、足すと255=11111111 です。
(ウ)は12桁を3桁ずつ4組に分ける——111/011/100/001 →7/3/4/1。ちょうど割り切れる桁数なので、0 を補う必要はありません。
(エ)は8桁を4桁ずつ2組——1101/0111 →D/7。1101=8+4+1=13=D、0111=4+2+1=7 です。

⚠️ よくある間違い
(ア)を37 としている選択肢は末尾の0 を1 と読み違えたもの。00100100 の1 は6桁目と3桁目——32+4=36 です。
(エ)を C7 としている選択肢は1101 を12(C)と誤ったもの。1100=C、1101=D——1つ違いです。
(ウ)を7321 としている選択肢は3桁目の区切りを誤ったもの——下位から区切ることを徹底してください。
10進→2進の2つのやり方
(イ)の変換には、2つの方法があります。どちらでも同じ答えになるので、やりやすいほうを使ってください。
| 方法 | 手順 | 向いている場面 |
| 逐次除算法 | 2で割って余りを記録、下から並べる | 機械的で確実 |
| 重み減算法 | ★大きい重みから引けるだけ引く | 暗算で速い |
重み減算法なら——170 から128 を引いて42、32 を引いて10、8 を引いて2、2 を引いて0。使った重みは128・32・8・2 なので、その桁に1 を立てれば10101010 になります。
2の累乗を覚えておくと速い——1、2、4、8、16、32、64、128、256、512、1024。1024=210≒1000 という感覚も、情報の分野では頻繁に使います。
⏱️ 本番での進め方
①(ア)1 が立つ桁の重みを足す。32+4=36。
②(イ)大きい重みから引く。128+32+8+2=170。
③(ウ)★下位から3桁ずつ。111 011 100 001=7341。
④(エ)★下位から4桁ずつ。1101 0111=D7。
💡 覚え方
「8進は3桁、16進は4桁、区切りは下位から」——この一言で(ウ)(エ)が解けます。そして「1101=D」——C との1つ違いに注意してください。

小数の基数変換
本問は整数だけでしたが、小数の変換も出題されることがあります。整数部とは手順が逆になるので押さえておきましょう。
| 整数部 | 小数部 | |
| 操作 | 2で割る | ★2を掛ける |
| 拾うもの | 余り | ★1の位に繰り上がった値 |
| 並べる順 | 下から上へ | ★上から下へ |
0.625 を2進数にしてみましょう——0.625×2=1.25(1 が出る)、0.25×2=0.5(0)、0.5×2=1.0(1)。並べて 0.101 になります。
検算は重みで——0.101=1/2+0/4+1/8=0.5+0.125=0.625。小数点以下の重みは 1/2、1/4、1/8… です。
2進数で表せない小数がある
0.1(10進数)を2進数にすると、循環小数になります。0.0001100110011…——いつまでも終わりません。
10進数で1/3 が0.333… になるのと同じ——基数で割り切れない分数は循環するのです。2進数で有限桁になるのは、分母が2の累乗の分数だけになります。
だからコンピュータでは0.1+0.2 が0.3 にならない——有限桁で打ち切るしかないから誤差が出るのです。お金の計算に浮動小数点を使ってはいけないと言われる理由がここにあります。
2の累乗を覚えておく
基数変換では2の累乗が繰り返し出てきます。10乗まで覚えておくと計算が速くなるでしょう。
| n | 2n | n | 2n |
| 0〜3 | 1、2、4、8 | 8 | 256 |
| 4〜7 | 16、32、64、128 | 10 | ★1024 |
210=1024≒1000——だから「1キロバイト=1024バイト」になります。220≒100万でメガ、230≒10億でギガ——10乗ごとに1000倍 という対応です。
本問の170=128+32+8+2 も、2の累乗を覚えていれば暗算できます。大きいほうから引いていくだけです。
変換を間違えないための確認法
基数変換は手順が単純なぶん、うっかりミスが起きやすい——簡単な確認法を持っておくと安心です。
| 確認法 | やり方 | 効果 |
| 桁数の見当 | 2進8桁なら0〜255 の範囲 | 大きく外れたら気づける |
| 逆変換 | ★答えを元に戻して一致を見る | 最も確実 |
| 偶奇の一致 | 2進の末尾が0 なら10進も偶数 | 一瞬で確かめられる |
偶奇の確認は速くて有効です。(00100100)2 の末尾は0 なので偶数——36 は偶数なので矛盾しません。もし37 なら奇数で、末尾が1 でなければおかしいと分かります。
この一手だけで(ア)が36 か37 かを決められる——計算し直すより速い方法です。
まとめ
| (ア) | 36 |
| (イ) | 10101010 |
| (ウ) | 7341 |
| (エ) | D7 |
| 答え | (4) |
▼あわせて解きたい関連問題
・2進数・10進数・16進数に関する記述の正誤判定:【機械】令和3年度A問題14
・ビットパターンの論理演算と16進数変換:【機械】令和6年度上期A問題14

コメント