今回は平成19年度 機械科目 B問題18を解説します。分解能2〔mV〕のD-A変換器について、ユニポーラ・コード、オフセット・バイナリ・コード、バイポーラ・コード(2の補数)という3種類のコード方式それぞれの出力電圧を求める(a)と、逆に指定の出力電圧を得るためのディジタル入力量を求める(b)の問題です。
ユニポーラ・コードはV=0.002d、オフセット・バイナリ・コードはV=0.002(d-2048)、バイポーラ・コードは正の範囲でV=0.002d、負の範囲でV=-0.002(4096-d)という3つの直線式を使い分けます。(b)ではこれらの式を10進入力dについて逆算し、最後に16進数に変換します。
平成19年度 機械科目 B問題18:問題文と選択肢
まずは、実際の試験問題を確認してみましょう。

出典:一般財団法人 電気技術者試験センター「平成19年度 第三種電気主任技術者試験」機械科目 B問題18
電験3種 機械科目 【情報】 平成19年度 B問題18
分解能が2〔mV〕のD-A変換器について,図を参考にして,次の(a)及び(b)に答えよ。
(a) 12ビットのディジタル入力量の(000)16を0〔V〕の出力電圧として,正の電圧のみを扱うユニポーラ・コードによるD-A変換器の場合,ディジタル入力量の(9C4)16は,(ア)〔V〕の出力電圧になる。ディジタル入力量の(000)16から(FFF)16の範囲で,(800)16を0〔V〕の出力電圧とし,(000)16側を負,(FFF)16側を正とするオフセット・バイナリ・コードによるD-A変換器の場合,出力電圧の範囲は,(イ)〔V〕となる。また,2の補数を用いて正負の電圧を扱うバイポーラ・コードによるD-A変換器では,ディジタル入力量の(A24)16は,(ウ)〔V〕の出力電圧になる。上記の記述中の空白箇所(ア),(イ)及び(ウ)に当てはまる数値として,正しいものを組み合わせたのは次のうちどれか。
(b) このD-A変換器がユニポーラ・コードのD-A変換器の場合,出力電圧1.250〔V〕を得るためのディジタル入力量は,(エ)となる。このD-A変換器がオフセット・バイナリ・コードのD-A変換器の場合,出力電圧1.250〔V〕を得るためのディジタル入力量は,(オ),出力電圧-1.250〔V〕を得るためのディジタル入力量は,(カ)となる。このD-A変換器が2の補数によるバイポーラ・コードのD-A変換器の場合,出力電圧-1.250〔V〕を得るためのディジタル入力量は,(キ)となる。上記の記述中の空白箇所(エ),(オ),(カ)及び(キ)に当てはまる数値として,正しいものを組み合わせたのは次のうちどれか。
(ア) (イ) (ウ) (1) 4.968 -4.094〜4.096 -3.000 (2) 4.968 -4.094〜4.096 -2.998 (3) 5.000 -4.096〜4.096 -3.000 (4) 5.000 -4.096〜4.094 -2.998 (5) 5.000 -4.096〜4.094 -3.000
(エ) (オ) (カ) (キ) (1) (271)16 (A71)16 (58F)16 (D8F)16 (2) (271)16 (271)16 (58F)16 (58F)16 (3) (271)16 (A71)16 (D8F)16 (58F)16 (4) (625)16 (271)16 (D8F)16 (D8F)16 (5) (625)16 (A71)16 (D8F)16 (D8F)16
出題のポイント:3つのコードの直線式
同じ12ビットの入力でも、コード方式によって0 V の位置が変わります——まず3本の式を書き分けることから始めましょう。
| コード方式 | 0 V になる入力 | 出力の式 |
| ユニポーラ | (000)16 | V=0.002d |
| オフセット・バイナリ | ★(800)16=2048 | V=0.002(d−2048) |
| バイポーラ(2の補数) | (000)16 | ★d≧2048 では V=−0.002(4096−d) |
12ビットなので入力は0 〜4095 の4,096段——分解能2 mV なので、全体で約8.19 V の幅があります。
ユニポーラは正だけ、他の2つは正負両方——同じ4,096段を、どこを0 V とするかで振り分けていると考えてください。
(a)の3つを計算する
★(ア)
★−4.096〜4.094 V
2048以上なので負
★(ウ)
(イ)の上端が4.096 ではなく4.094——入力の最大は4095 であって4096 ではないからです。1段分(2 mV)だけ足りない——ここが選択肢を分ける決め手になります。

(b) 逆算して16進数に直す
(b)は式を d について解くだけ——最後の16進変換で手間取らないよう、手順を決めておきましょう。
\( 625=(271)_{16} \)
\( 2673=(\mathrm{A}71)_{16} \)
\( 1423=(58\mathrm{F})_{16} \)
\( 3471=(\mathrm{D}8\mathrm{F})_{16} \)
10進から16進への直し方
12ビットなら3桁の16進数——256、16、1 の位に分けるだけです。
| 位 | 重み | 625 の場合 |
| 上位 | 256 | 625÷256=2 余り113 |
| 中位 | 16 | 113÷16=7 余り1 |
| 下位 | 1 | 1 |
| 結果 | — | ★(271)16 |
10 〜15 はA 〜F——2673÷256=10 余り113 なので上位はA。残りは625 と同じ113 なので71——合わせて(A71)16 です。
(オ)と(エ)は2048(=(800)16)だけ違う——上位桁に8 を足しただけという見方もできます。2+8=A なので確かに合っています。

⚠️ よくある間違い
上端を4.096 V としてしまうのが最大の誤り——選択肢(3)がその値です。
入力の最大値は(FFF)16=4095——4096 ではありません。「段数は4,096 だが、最大の番号は4,095」——0 から数え始めるから1つ少ないのです。
だから正側は4.094 V まで、負側は−4.096 V まで——上下が対称にならないのがオフセット・バイナリの特徴です。
もう1つ、(ウ)で(A24)16 を正の数として計算しない——2048以上なので負。MSB が1 なら負と確認してから式を選びます。
⏱️ 本番での進め方
①3つの式を先に書き出す。ユニポーラ/オフセット/バイポーラ。
②16進→10進は256、16、1 の重みで展開。
③★上端は4095 であって4096 ではない。4.094 V。
④バイポーラはMSB=1 なら負。式を切り替える。
💡 覚え方
「0 V がどこにあるか」でコードが決まる——ユニポーラは端、オフセットは中央。そして「4,096段だが最大値は4,095」——0 から数える以上、必ず1つ少ないのです。
オフセット・バイナリ・コードは平成22年度 B問題18や令和6年度上期 B問題18でも出題されています(平成22年度/令和6年度上期)。

D-A変換器の実際の回路
ディジタルの数値を、どうやって電圧に変えているのか——基本は抵抗による重み付けです。
| 方式 | 仕組み | 特徴 |
| 重み抵抗形 | 各ビットにR、2R、4R…の抵抗 | ★ビット数が増えると抵抗値の幅が広すぎる |
| はしご形(R-2R) | ★R と2R の2種類だけ | 精度を出しやすく主流 |
上位ビットほど大きく寄与する——これが「重み付け」です。12ビットなら最上位は最下位の2,048倍効きます。
重み抵抗形では、12ビットで抵抗値が4,096倍の幅——1 kΩ と4 MΩ を同じ精度で作るのは困難です。だからR-2R はしご形が使われます。
R と2R の2種類だけで済む——同じ値の抵抗を並べるほうが、比精度を高くできるのです。集積回路の中では、これが決定的な利点になります。
まとめ
| (a)(ア) ユニポーラ | 5.000 V |
| (a)(イ) オフセットバイナリ範囲 | -4.096〜4.094 V |
| (a)(ウ) バイポーラ | -3.000 V |
| (b)(エ) ユニポーラ入力 | (271)16 |
| (b)(オ)(カ) オフセットバイナリ入力 | (A71)16 / (58F)16 |
| (b)(キ) バイポーラ入力 | (D8F)16 |
| 答え | (a)-(5),(b)-(1) |
▼あわせて解きたい関連問題
・コンピュータの5大装置とICメモリの正誤判定:【機械】平成27年度B問題18
・マイクロプロセッサのサイクルタイムと動作周波数:【機械】令和5年度上期B問題18

コメント