• ベストアンサー

単精度実数の範囲を求める方法を教えて下さい

ご教授願います。 単精度実数では1ビットの符号部、7ビットの指数部、24ビットの仮数部で表し、-3.40282×10^38~3.40282×10^38の範囲を表すとあります。この、-3.40282×10^38~3.40282×10^38はどのように計算すると求められるのでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.6

最大値の数字から判断して、IEEE754の単精度実数だろうと思いますのでその線で説明します。 まず、浮動小数点数が 仮数部×指数部で表されるというのはいいですよね? で、二進数でこれらの最大値を考えると、 1.111....1 (全部で24ビット分) が仮数部の最大値で、 指数部の最大値が 127 になるというのもいいですか? そうすると全体として 1.111...11(二進数) × 2^127 が最大の大きさになります。これを十進数に変換すると大体質問にあるような数字になります。 正確な手順は忘れてしまいましたが、とりあえず指数部に関しては 2^126 が十進数では何桁になるかを概算すると log10(2^127) → 127 × log10(2) → 127 × 0.301 → 38.22700 となりますのでまあ大体38桁前後(10^38) ですよ。ということです。 正確なところは数学カテゴリででも訊いてください(^^; 数値計算入門I~第2回~ http://zwo.phys.chs.nihon-u.ac.jp/Suchi12/1-2/1-2.html

takusama
質問者

お礼

ご返信、ありがとうございます。 詳しくご記載頂き、とても参考になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (8)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.9

大丈夫だろうけど「その形式だ」と勘違いされるとまずいな~と思ったんですが, 文章を読み切れず申し訳ありません>#8. しかし, 本当のところどんな形式なんだろ?

全文を見る
すると、全ての回答が全文表示されます。
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.8

>ここで挙がっている形式とは異なります>#6. ごもっとも。 それを踏まえた上でこういった感じで求められますよという例を出したまでですので その辺ご賢察いただきたく :)

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.7

IEEE754 単精度実数は符号 1ビット, 指数部 8ビット (オフセット 127), 仮数部 23ビット (指数部が 0 と 255 以外では整数部の 1 を除く) なので, ここで挙がっている形式とは異なります>#6. もちろん「最大値」から IEEE754 単精度っぽいことは推測できるんですが, ビットの振り分け方が違う (特に仮数部が 24ビットということから「仮数部を 16進 6桁で表現し, 指数部は 16 のべき」という可能性すらある) ので「どういう表現なのか」と聞いてるわけです. ところで, その「モノの本」のタイトルなどは挙げられないんでしょうか? まあ挙がったとしても確認できるかどうかはわかりませんが.

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

「どんな値を意味するのか」はその「モノの本」に (数式付きで) 書いてあるような気がするんだけどなぁ. 書いてなかったとしても, 調べるために必要なものはそろってるはずだから検索すればわかるはずだよ. 浮動小数の表記法としては IEEE754 が標準だけど, これだと指数部は 8ビットなんだよなぁ. だから聞いたんだけど....

takusama
質問者

お礼

ご返信、ありがとうございます。 IEEE754とはビットの振分けが違うようです。 ネットで調べた限りでは2通りの表記方法があるようです。 範囲の結果の表記はあるのですが、計算過程を見つけるとはできませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • outerlimit
  • ベストアンサー率26% (993/3718)
回答No.4

24ビットの仮数部を10進表記すれば 有効数値が求められます 7ビットの指数部で仮数部が表す値の範囲が求められます が 表記法によって純2進表記や4ビット正規化表記等がありますから 定義を確認しない限り、正解にはなりません

takusama
質問者

お礼

ご返信ありがとうございます。 モノの本での記載が上記の通りでしたので…。知識不足で申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

ビットパターンと「それが表している数値」の関係を教えてください. それがないと, 答えようがありません.

takusama
質問者

お礼

ご返信ありがとうございます。 モノの本での記載が上記の通りでしたので…。知識で不足申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

>System.Math.Pow(2,-(8-1))(こちらは絶対値の最大最小を求めるのには使わない) 間違い。 - System.Math.Pow(2,(8-1)) が多分正しい

takusama
質問者

お礼

ご返信ありがとうございます。 せっかくご解答を頂いたのですが、当方のプログラムに関する知識が乏しい為、内容を理解することができませんでした。 申し訳ありませんが、数式での解法を記載して頂けると助かります。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

/* C# 多分計算としてはこんな感じ。 Wikipedia見ると,単精度浮動小数点数は http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0#IEEE.E6.96.B9.E5.BC.8F.EF.BC.88IEEE_754_.E5.BD.A2.E5.BC.8F.EF.BC.89 符号部1ビット・指数部8ビット・仮数部23ビット って書いてあるんだけど? 仮数部はその仕様上,最大で2未満にしかならない(正確には2 - System.Math.Pow(2,-23)) 面倒くさいので2でいいや。 指数部は正と負の数を考えなきゃいけないから 8ビットだと 最大で System.Math.Pow(2,(8-1)) - 1 最小で System.Math.Pow(2,-(8-1))(こちらは絶対値の最大最小を求めるのには使わない) 小さいほうが1大きいのは http://www.algolab.co.jp/~lum/pcnyumon/nyu032.htm あたりを参考のこと 符号部ももちろん、絶対値の最大最小を求めるのには使わない よって 考えられる最大値は = System.Math.Pow(2,System.Math.Pow(2,7) - 1) * 2 見づらいから10を底として対数とって見よう・・・(以下コード見ればわかるので省略) */ namespace Q3912041A { class Program { public static void Main(string[] args) { double a = System.Math.Pow(2,System.Math.Pow(2,7) - 1) * 2; //最大桁数 System.Console.WriteLine(System.Math.Floor(System.Math.Log(a,10))); // 38 System.Console.WriteLine(a / System.Math.Pow(10,38)); // 3.40282366920938 System.Console.ReadKey(true); } } }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 浮動小数点の精度と範囲からすると、「0」はどうなるのでしょうか

    IEEE754の単精度による浮動小数点表現(符号部1ビット、指数部8ビット、仮数部23ビット)ですと、その表現できる範囲が数値の絶対値で、2^(-126)=1.2×10^(-38)から(2 - 2^(-23))×2^(127)=3.4×10^(38)になりますが、数値の「0」はどう表現されるのでしょうか。たとえば、C言語などで、変数の値が「0」の場合、コンピュータ内部の2進数表現はどのようになっているのでしょうか。よろしくお願いいたします。

  • なぜ同じ実数型は整数型よりも広い範囲を表現できるのですか?

    なぜ同じ実数型は整数型よりも広い範囲を表現できるのですか? 素朴な疑問です。 整数型が表現できる範囲は単純で理解できるのですが、それだけに 実数型が同じ情報量(バイト数)でさらに広い範囲の数を表現できるのはなぜでしょう? 仮数部や指数部の数字を掛けたり足したりするだけで 全ての数をきっちり作れるというのはにわかには信じられません。 もしかして近似値を使っているのでしょうか?(0.099→0.1のように)

  • -5.75をIEEE754単精度実数表現

    -5.75(10進数)をIEEE754単精度実数表現する問題なんですが、 ・負だから符号ビット(1)…(1) ・5.75=(101.11000…)→1.0111000…×2^2 ・2=b-127 , b=129=(10000001)…(2) ・5.75を2bitで表したやつの小数点以下(0111000…)…(3) (1)(2)(3)を順に並べて『1 10000001 0111000…』 で合っていますか?よろしくお願いします。

  • 浮動小数点(エクセス64形式)、倍精度(64bit)仮数部は何bit?

    タイトルの通り、エクセス64形式の倍精度(64bit)のときの指数部、仮数部がそれぞれ何bitなのかわかりません。IEEE形式のものと、単精度(32bit)のものは調べられたのですが・・・ (421C 1999 9999 99A0) 等、いくつかエクセス64形式で表記された値があり、これを実数でいくつになるか確認するためです。 よろしくお願いします。

  • IEEE754 浮動小数点の問題

    -10.375(10進数)をIEEE754規格の単精度浮動小数点表現のビット列で示せ。という問題で、 ・仮数部の符号ビットが1bitで指数部が8bitで仮数部が23bitで合計32bitでいいんですよね?本によって割り当てが違うんですけど。 ・僕自身この問題を解いた結果、1 10000010 0100110・・・0 (一番前が、符号bit。真中が指数bit。一番後ろが仮数bit) で合っていますか?答え合わせのほどを。 どうか、願いします。

  • 16ビット浮動小数点数の表現方法について

    学校の課題において、ある数を2進数で表現し、さらにその数を16ビット浮動小数点数で表しなさい。またそのとき生じる誤差の名称を記しなさい、という課題がでており取り組んでいるのですが、ネットで調べていても計算方法が理解できず行き詰っております。どなたか計算方法の手助けをお願いできないでしょうか。 与えられた条件 符号ビット:1ビット(0:正、1:負) 指数部:4ビット 仮数部:11ビット 16ビット浮動小数点数で表す数 10011100011000011 です。計算方法を理解したいので、なるべく詳しくお願いいたします。 誤差の名称もできればご教授願います。

  • 浮動小数点数の内部表現について教えてください

    float型の内部表現を表示するプログラムを書いていくつか試してみたのですが、どこからどこまでが仮数部でどこからどこまでが指数部なのか良くわかりません。 曲がりなりにも自分で考えた結果は次のとおりです。 10進表示: 内部表現 ;2進の指数表現 2 :01000000000000000000000000000000;10.0*10^0 4 :01000000100000000000000000000000;10.0*10^1 8 :01000001000000000000000000000000;10.0*10^10 16:01000001100000000000000000000000;10.0*10^11 32:01000010000000000000000000000000;10.0*10^100 また、 1 :00111111100000000000000000000000;0.1111111*10^0 0.5 :00111111000000000000000000000000;0.0111111*10^0 0.25:00111110100000000000000000000000;? 0.125:00111110000000000000000000000000;? 0.0625:00111101100000000000000000000000;? となりました。最上位ビットが符号だということは分かります。 質問をまとめると、 (1) 10進で 0.5 の2進指数表現は 0.0111111*10^0 ということなのでしょうか。もしそれで正解なら、どうして 0.1*10^0 としないでわざわざ丸め誤差を含む無限小数で表すのでしょうか。 (2) 仮数部と指数部のビットは決められていなくて、例えば状況によって仮数部のビットが少なくなり指数部のビットが多くなったりするのでしょうか。 (3)仮数部での小数点はどこにあるのでしょうか。 (4)float 型の小数精度は最小6桁ということですが、これは10進で6桁なのか2進で6桁なのか教えてください。 どれか一つでも教えていただけると助かります。 使ったコンパイラは Borland C++ Compiler 5.5 です。 }

  • 浮動小数点表示 加算方法 IEEE

    指数部3bit、仮数部4bit、符号1bitの合計8bitの2進数の浮動小数点表示で、 (1)0.125+0.125+2.5 (2)2.5+0.125+0.125   (10進数) を計算せよ。 という問題です。 0.125(10)は00000000(2)、2.5(10)は01000100(2)となることはわかるのですが、この二つの計算方法がよく理解できません。 どちらかが誤差が生じたりすると思うのですが、それがよくわからず困っています。 教えてください。

  • 浮動小数点表現

    2^{24}を32bit整数表現及び32bit(単精度)浮動小数点表現で表せ。 結果は16進数で示せ。 符号ビット:MSB 指数部n:7ビット 仮数部:24ビット という問題があるのですが、 解いてみたものの、答えもないのであっているのか分かりません。 以下の答えで合っているでしょうか? また、合っていなかったら、どのように解くのか教えていただけませんか? 整数表現 0100 0000H 浮動小数点 0100 1000 0100 0000 0000 0000 0000 0000

  • 浮動小数点の正規化方法について

    基本情報処理技術者試験を20日に受けます。勉強不足で困っています。どなたか教えてください。 問題「数値を16ビットの浮動小数点表示法で表現する。10進数0.375を正規化せよ:ここでの正規化は仮数部の有効数字よりも上位の0がなくなるように指数部を調節する操作である。」  答え「0111111000000000」 最初の1ビットが仮数部の符号、次の4ビットが2のべき乗の指数部で負数は2の補数、残りの11ビットが仮数部の絶対値 となっています。 0.375を2進数に直すところまではわかったのですが、次の正規化がよくわかりません。よろしくお願いいたします。

収入の増加と影響
このQ&Aのポイント
  • 養老孟司さんが本なんて売れても人生変わらないとおっしゃったそうですが、本が売れて印税や講演が増えても変わらないという意味なのか、大企業のオーナー並みに収入が増えないと変わらないという意味なのか、収入なんていくら増えても人生変わらないという意味なのか、どういう意味なのでしょう。
  • 養老孟司さんの言葉からは、単に収入の増加だけでは人生が変わらないというメッセージが伝わってきます。本が売れて印税や講演が増えても、それだけでは本当の幸せや充実感は得られないのかもしれません。
  • 大企業のオーナーなどと比べても収入が増えなければ人生が変わらないという意味ではないでしょう。収入の増加だけではなく、人生の意義や目的、自己成長など、他の要素も考慮する必要があるかもしれません。収入の増加は一つの指標に過ぎず、人生の豊かさはそれだけに依存するわけではないのかもしれません。
回答を見る