応用情報技術者 2020年 秋期 午前2 問24
問題文
8ビットD/A変換器を使って負でない電圧を発生させる。使用する D/A変換器は、最下位の1ビットの変化で出力が10ミリ V変化する。データに0を与えたときの出力は 0ミリVである。データに16進数で82 を与えたときの出力は何ミリVか。
選択肢
ア:820
イ:1,024
ウ:1,300(正解)
エ:1,312
🔒 解説は解答すると表示されます
8ビットDACの電圧換算【午前2解説】
正解の理由
16進数のデータを10進数に変換して、LSB当たりの電圧変化を掛ければ出力電圧が得られます。与えられた値は (16進)で、これを10進に直すと です。1ステップの変化が mV なので、出力は mV = mV となり、選択肢の中では ウ が一致します。
解法ステップ
- 16進数を10進数に変換する。
- 1LSB の電圧増分を掛ける。
- 単位を確認して選択肢と照合する(1300 mV → ウ)。
簡単なプログラム例:
value = int('82', 16) # 16進 '82' を 10進に変換
output_mv = value * 10 # 1LSB = 10 mV
print(value, output_mv) # 出力: 130 1300
選択肢別の誤答解説
- ア: 820
誤りの典型例は、16進数の"82"をそのまま10進の82と見なし、mV = mV と計算することです。これは桁基数の誤認です。 - イ: 1,024
この値はよくあるケアレスミスや単位の取り違え(例: 2のべき乗の混同や別のビット長と混同)から出る値です。本問の正しい変換手順では導けません。 - エ: 1,312
一例として、16進の'82'を10進の82と見なし、誤って「16を掛ける」といった手順で計算すると となり、これをそのまま mV として選んでしまう可能性があります。基数変換とスケーリングを混同した結果です(正しい手順では を先に10進に直してからLSBを掛けます)。
よくある誤解
- 16進数をそのまま10進として扱う("82"を82としてしまう)。
- 「16進→10進の変換」と「LSBを掛ける」手順を混同して、余分に16を掛けるなどの誤操作をする。
- DACのデータが符号付き(負を含む)と誤認し、オフセットや2の補数を考慮してしまう(本問は「負でない電圧」=符号なし)。
補足コラム
- 一般式: 出力電圧 = (入力データの10進値) × (1LSBの電圧)
ここでは mV。 - 参考: 8ビットDACの最大出力は mV = mV = V(データが0~255の場合)。
- 16進の早見テクニック: 高位桁×16 + 低位桁。たとえば 'AB' は 。
FAQ
Q. もし「データに0を与えたときの出力が0でない」とあったら?
A. その場合はオフセットがあるので、一般式にオフセット項を加えます:。
A. その場合はオフセットがあるので、一般式にオフセット項を加えます:。
Q. LSBが mV ではなく V 表示だったら?
A. 単位を合わせて計算します(例: 0.01 V = 10 mV)。単位換算ミスがないか常に確認してください。
A. 単位を合わせて計算します(例: 0.01 V = 10 mV)。単位換算ミスがないか常に確認してください。
関連キーワード: 8ビットDAC、D/A変換、16進数変換、LSB、電圧換算

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

