応用情報技術者 2014年 秋期 午前2 問19
問題文
8ビットD/A変換器を使って負でない電圧を発生させる。使用する D/A変換器は、最下位の1ビットの変化で出力が 10ミリV変化する。データに0を与えたときの出力は0ミリVである。データに16進数で82を与えたときの出力は何ミリVか
選択肢
ア:820
イ:1,024
ウ:1,300(正解)
エ:1,312
🔒 解説は解答すると表示されます
8ビットD/Aの電圧算出【午前2解説】
正解の理由
与えられたデータは16進数の82(0x82)であり、これを10進に直すと です。D/A変換器は最下位ビットの変化で出力が10ミリV変化し、データ0で0ミリVなので、出力電圧はデジタル値に10mVを掛けた値になります。したがって出力は となり、選択肢の中では ウ が正しいです。
解法ステップ
- 16進
82を10進に変換する: - 1LSB = 10mV なので、出力電圧
(一般式:、ここで は10進のデジタル値)
選択肢別の誤答解説
-
ア: 820
- 発生しやすい誤りは、16進数
82をそのまま「82(10進)」と誤認し、 と計算することです。正しい変換は各桁を16の重みで評価すること()です。
- 発生しやすい誤りは、16進数
-
イ: 1,024
- 1,024は の値で、コンピュータ関連で頻繁に現れる数値ですが、本問の計算(16進→10進→LSB乗)とは無関係です。候補として選ばれる理由としては「2の冪や1k(1,024)と混同した」「ビット数を誤って10ビットと見なした」などの認識ミスが考えられますが、正しい手順では導出されません。
-
ウ: 1,300
- 正答。上記の通り、0x82 = 130(10進)で になります。
-
エ: 1,312
- よくある誤りは「16進数の変換方法を取り違える」ことです。例えば
82を10進として扱い、さらに「16を掛けるべきだ」と誤って としてしまうパターンです。しかし正しい変換は各桁を重み付けして を行うことであり、上記の掛け算は誤りです。
- よくある誤りは「16進数の変換方法を取り違える」ことです。例えば
よくある誤解
- 16進数をそのまま10進数とみなして計算してしまう(桁ごとの重みを使う必要がある点の見落とし)。
- LSB(ここでは10mV)の掛け算を忘れる、あるいは誤った係数を使う(例:1LSBを8mVや1mVと誤認)。
- 2の冪(例:1024)やビット数の数え方を混同して、無関係な値を使ってしまう。
補足コラム
- 16進数の一般的な変換手順:例えば
AB16なら (A,Bは16進の各桁の値)。 - 8ビットD/Aで1LSBが10mVの場合、最大出力は (データFFh)。
- 確認用の簡単なPython例:
value_hex = "82"
value_dec = int(value_hex, 16) # 16進を10進に変換
lsb_mV = 10
voltage_mV = value_dec * lsb_mV
print(value_dec, voltage_mV) # 出力: 130 1300
FAQ
Q. 16進
A. 各桁を16の重みで評価します:。
82 はどうやって計算する?A. 各桁を16の重みで評価します:。
Q. LSBの意味は?
A. LSB(Least Significant Bit)は「最下位ビット」のことで、ここでは1ビット変化で出力が変わる電圧量(10mV)を指します。
A. LSB(Least Significant Bit)は「最下位ビット」のことで、ここでは1ビット変化で出力が変わる電圧量(10mV)を指します。
Q. なぜ0のとき0mVなのか重要?
A. オフセットがあるD/Aだと基準がずれる(例えばデータ0で-500mVなど)ため、設問で0→0mVと明示されていることにより単純に D×LSB の計算でよいことが確認できます。
A. オフセットがあるD/Aだと基準がずれる(例えばデータ0で-500mVなど)ため、設問で0→0mVと明示されていることにより単純に D×LSB の計算でよいことが確認できます。
関連キーワード: 16進変換、LSB、D/A変換、電圧換算、基数変換、進数混同

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

