浮動小数点数表現-有効桁数の切り捨てについて
琥狛さん
(No.1)
H25 応用情報技術者合格教本 著/大滝+岡嶋
を使用し学習しているのですが、本中に以下のような記述がありました。
1.1.6 浮動小数点表現 - 有効桁数
仮数部は23bitなので、2進数の有効桁数は23桁となり、これを10進数に変換した時の有効桁数を求めるときは次のようになります。
10進数に変換した時の有効桁数をNとし
2^23 = 10^N
両辺から対数(底10)をとり、式を展開
log(10)2^23 = log(10)10^N
23 × log(10)2 = N × log(10)10
23 × 0.301 = N
6.923 = N
となりN=6桁(切り捨て)と求められます。
※ ()の数字は基数を表しています。
この切り捨てが引っかかります。
実際に23bitの二進数で表現できる10進数は0~8,388,607となり、これを一般的な有効桁数は幾つかという話になると7桁ということになるかと思います。
元プログラマーの私としては、
23bit領域をもった変数に10進数は何桁はいるのか、と考えると、
元プログラマーの私としては、23bitでは9,999,999が入らないが、0~999,999なら入れることができるので、6桁となる。。。。のかな?と考えているのですが、実際のところどうなのでしょうか???
一般的な「有効桁数」ではなく、上記の様に桁内ですべての数字(0~9)を使える桁数を有効桁数としているのか。
それとも、私は全く見当違いな考えをしているのか。
どうかよろしくお願いします。
備考:問題の記述の箇所はIEEE754を使わない浮動小数点の話です。
を使用し学習しているのですが、本中に以下のような記述がありました。
1.1.6 浮動小数点表現 - 有効桁数
仮数部は23bitなので、2進数の有効桁数は23桁となり、これを10進数に変換した時の有効桁数を求めるときは次のようになります。
10進数に変換した時の有効桁数をNとし
2^23 = 10^N
両辺から対数(底10)をとり、式を展開
log(10)2^23 = log(10)10^N
23 × log(10)2 = N × log(10)10
23 × 0.301 = N
6.923 = N
となりN=6桁(切り捨て)と求められます。
※ ()の数字は基数を表しています。
この切り捨てが引っかかります。
実際に23bitの二進数で表現できる10進数は0~8,388,607となり、これを一般的な有効桁数は幾つかという話になると7桁ということになるかと思います。
元プログラマーの私としては、
23bit領域をもった変数に10進数は何桁はいるのか、と考えると、
元プログラマーの私としては、23bitでは9,999,999が入らないが、0~999,999なら入れることができるので、6桁となる。。。。のかな?と考えているのですが、実際のところどうなのでしょうか???
一般的な「有効桁数」ではなく、上記の様に桁内ですべての数字(0~9)を使える桁数を有効桁数としているのか。
それとも、私は全く見当違いな考えをしているのか。
どうかよろしくお願いします。
備考:問題の記述の箇所はIEEE754を使わない浮動小数点の話です。
2013.02.27 00:50
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。