平成27年 秋季 問7 設問3
広告
質問者さん
(No.1)
問題文の最下位ビットが”1/2048ボルトの重み”という表現と
”1024-(1/2048)ボルト”という表現の意味がわかりません。
過去スレでも似たような質問がありましたが、私も答えは11桁と思ってしまいました。
IPAの講評では少数部も考慮するようですが、問題文のどこから少数部があることを
読み取ればよいのでしょうか。
”1024-(1/2048)ボルト”という表現の意味がわかりません。
過去スレでも似たような質問がありましたが、私も答えは11桁と思ってしまいました。
IPAの講評では少数部も考慮するようですが、問題文のどこから少数部があることを
読み取ればよいのでしょうか。
2018.08.20 00:33
あいうえおさん
(No.2)
この投稿は投稿者により削除されました。(2018.08.20 01:59)
2018.08.20 01:59
助け人さん
★AP ゴールドマイスター
(No.3)
まず、以下のことを思い出してください。
2の補数を使って8ビットで表せる値の範囲は、-2^7~2^7(-128~127)。
最下位ビットが1/2,048ボルトの重みとは、1ビットの変化、言い換えると1ビット当たり1/2,048ボルトということです。つまり、1/2,048ボルト増えれば、2進数で1増えるということです。例えば、3/2,048ボルトがある2進数として、4/2,048ボルトならその2進数に1を加えるということです。
-1,024ボルト~1,024-(1/2,048)ボルトを1/2,048ボルト単位で数えると、
-1,024×2,048~1,024×2,048-1
つまり、-2^10×2^11~2^10×2^11-1
つまり、-2^21~2^21-1
です。
この範囲を表すには、22ビット必要です。
2の補数を使って8ビットで表せる値の範囲は、-2^7~2^7(-128~127)。
最下位ビットが1/2,048ボルトの重みとは、1ビットの変化、言い換えると1ビット当たり1/2,048ボルトということです。つまり、1/2,048ボルト増えれば、2進数で1増えるということです。例えば、3/2,048ボルトがある2進数として、4/2,048ボルトならその2進数に1を加えるということです。
-1,024ボルト~1,024-(1/2,048)ボルトを1/2,048ボルト単位で数えると、
-1,024×2,048~1,024×2,048-1
つまり、-2^10×2^11~2^10×2^11-1
つまり、-2^21~2^21-1
です。
この範囲を表すには、22ビット必要です。
2018.08.20 07:41
今さら聞けないさん
(No.4)
> ”1024-(1/2048)ボルト”という表現の意味がわかりません。
たぶんなので、表現が正しいかはわかりませんが書いてみます。
小数で表すと、1/2048=0.00048828125
”1024-(0.00048828125)ボルト”=1023.99951171875
なので、正の範囲は”1023.99951171875”までという意味かなと思います。
小数部分だけでも 1/2048=2の-11乗=11ビット必要となる。
あとは、符号1ビット+整数部分10ビットも必要ですので、計22ビットという感じでしょうか。
2018.08.20 22:29
助け人さん
★AP ゴールドマイスター
(No.5)
今さら聞けないさん
-1,024~1,024-(1/2,048)は、-1,024~1023.99951171875となり、符号部1ビット、整数部10ビット、小数部11ビットで、計22ビットということですね。
その考え方を「-10~10を1/10単位で数える」場合に当てはめると、以下のようになると思います。(違っていたらすみません)
-10~10は符号部1ビットと整数部4ビット、1/10は小数部4ビットで、計9ビット
でも、正しくは、-10~10を1/10単位で数えると-100~100ですから、8ビットです。
この問題では、A/Dコンバータが表す数値は、-1,024~1,024-(1/2,048)を1/2,048単位で数えた整数値であり、それは-2^21~2^21-1です。
-1,024~1,024-(1/2,048)は、-1,024~1023.99951171875となり、符号部1ビット、整数部10ビット、小数部11ビットで、計22ビットということですね。
その考え方を「-10~10を1/10単位で数える」場合に当てはめると、以下のようになると思います。(違っていたらすみません)
-10~10は符号部1ビットと整数部4ビット、1/10は小数部4ビットで、計9ビット
でも、正しくは、-10~10を1/10単位で数えると-100~100ですから、8ビットです。
この問題では、A/Dコンバータが表す数値は、-1,024~1,024-(1/2,048)を1/2,048単位で数えた整数値であり、それは-2^21~2^21-1です。
2018.08.21 07:13
今さら聞けないさん
(No.6)
この投稿は投稿者により削除されました。(2018.08.21 13:59)
2018.08.21 13:59
今さら聞けないさん
(No.7)
助け人さん、指摘ありがとうございます。
「符号1ビット+整数部分10ビットも必要ですので」は間違いでした。
「負の値を2の補数表現として」じゃないとダメでした。
この表現は合っていると仮定します。
-1,024~1023.99951171875の範囲を2の補数で表現すると以下になり、
整数の部分と小数の部分で計22ビットであるのがわかると思います。
10進数 2進数のビット列
-1024 10000000000.00000000000
+1023.99951171875 01111111111.11111111111
また、私の意見はイメージしやすいかなと思って書いたようなもので、実際に出題されたときには小数とかにはしていられないので、助け人さんのような見解が重要になると思います。
「符号1ビット+整数部分10ビットも必要ですので」は間違いでした。
「負の値を2の補数表現として」じゃないとダメでした。
> ”1024-(1/2048)ボルト”という表現の意味がわかりません。
> ”1024-(0.00048828125)ボルト”=1023.99951171875
この表現は合っていると仮定します。
-1,024~1023.99951171875の範囲を2の補数で表現すると以下になり、
整数の部分と小数の部分で計22ビットであるのがわかると思います。
10進数 2進数のビット列
-1024 10000000000.00000000000
+1023.99951171875 01111111111.11111111111
また、私の意見はイメージしやすいかなと思って書いたようなもので、実際に出題されたときには小数とかにはしていられないので、助け人さんのような見解が重要になると思います。
2018.08.21 14:18
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。