
No.3ベストアンサー
- 回答日時:
回答ANo.1への補足,に対して。
浮動小数点数における正規化の必要性を説明するのに2進数を持ち出す必要はありません。10進数のままでも説明できます。
一例としてANo.2で挙げられた仮数部長で説明すると,2進数で23bitということは,10進数の桁に換算するとlog10(2^23)=約7桁となります。
もし仮に,仮数部・指数部ともに10進数で記録する浮動小数点数があると仮定し,さらにその仮数部長が7桁だと仮定するならば。
>[10進数]
>0.0000000000123456789012345678901234567890
という数は,7桁の仮数部長では正確に表現できませんから,丸め誤差が生じます。
同じ数値であっても,仮数と指数を組み合わせれば無限のパターンの表現ができます。今回の場合は,次の7つのパターンのうちのいずれかの表現形式を積極的に採用することになるでしょう。
(0.1234567)×10の-10乗
(0.0123456)×10の-9乗
(0.0012345)×10の-8乗
(0.0001234)×10の-7乗
(0.0000123)×10の-6乗
(0.0000012)×10の-5乗
(0.0000001)×10の-4乗
上記はすべて同じ数値なのですが,では「限られたビット数の中に少しでも多くの情報を詰め込」んでいるのはどれでしょう? 仮数部の長さ(=有効桁数)をムダにしないで,同じ数値であってもより精度の高い数として表現できているのはどのパターンでしょう?
その答えは「指数部を調整して、仮数部の最上位けたを“0以外にする”」というルールにのっとった,(0.1234567)×10の-10乗 であるのは明らかではないですか。
追伸.
ANo.2では IEEE754の「隠れ"1"表現」にまで触れているのですが,今回の問いに回答するだけならばそれは不要だと判断しましたので,省いてあります。
この回答への補足
ご回答ありがとうございます。
お返事が遅れて申し訳ありません。
色々考えた末でようやくわかってきました。
>という数は,7桁の仮数部長では正確に表現できませんから,丸め誤差が生じます。
これは7桁の仮数部長と範囲から、
他の少数第8位以降の数字が「その数が存在できる7桁という範囲」から外れて、切捨て(場合によっては切り上げ?)されてしまう、丸め誤差が生じるということですよね?
あ。そうかっ!
仮数部の制度を調整するために 指数部があるのですね。
「仮数部の最上位けたを“0以外にする”」というルールを元に、
指数部による、仮数部の値の調整を設けておくことで、表現できる数を増やしているのですね。
仮に32ビットが仮数部だった場合
【元の数】
「0.0000000000123456789012345678901234567890」
↓実際に表現できる数
【実際に表現された数】
「0.000000000012345678901234567890」(この32ビット分だけ)
※この場合だと負数の表現は不可能ですね・・・
そこで次に32ビット中の情報の中で必要となったのが
符号部の「1」ビットの保持だった、ということですね。
よって
1(符号部)ビット + 31(仮数部)ビット となった?
しかしこれだと保持できる値の範囲は限られてしまう。
そこで! 「最上位桁を0以外にする」 という ルールと、「指数部を扱う」 という発想が産まれた。 ことによって、「浮動小数点」という数の取り扱いの一つの手法が出た、ということでしょうか。
実は「隠れ"1"表現」も知りたかったのです。
言葉的に何といったらいいのか難しいところなのですが、
丁度基本情報処理試験の勉強をしていたもので、その中で――…
【平成19年度 秋 午後 問1】で出てきた問題の中で、
IEEE754に関する浮動小数点の話があがっていたのです。
で、その問題を解いて行く中で、何故「浮動小数点で数を表す際に、正規化は必ずしも必要なもの(行わなければならないもの)のだろうか」という疑問が上がってきたのです。
つまり、浮動小数点とは
「指数部を調整して、仮数部の最上位けたを“0以外にする”」というルールに則ることで、限られた仮数部長の中に、表現すべき元ある値を精度高く(元あった数に近く)表現することを可能とする、数を取り扱う手法の一つである、という認識で置いているのですが
勉強過程の分野でもあるのですが、
ひとまずこの認識で問題はないでしょうか?
No.5
- 回答日時:
>ひとまずこの認識で問題はないでしょうか?(回答ANo.3への補足)
はい,問題ないと思います。
>省略されている「1」はビット上では見えないだけで、
>「存在はしている」という認識でよいでしょうか?(回答ANo.2への補足)
基本的にはそれでよいです。きちんとお知りになりたければ,例えばja.wikipediaなどを参照していただくと,ゼロや非正規化数などではそうでないことが分かるでしょう。
http://ja.wikipedia.org/wiki/IEEE_754
No.4
- 回答日時:
#1・2です。
私の回答は、質問者さんの意図のとらえ方が狭すぎたようですね。
この回答への補足
ご回答ありがとうございます。
意図は捉えられておられたかと思います。
IEEE754を例に出されているところが凄かったと思います。
ご回答者様が教えてくださった内容に、
知りたかった点がちゃんと含まれていました。
ご回答下さった回答者 様方
ご丁寧なご回答をありがとうございます。
No.2
- 回答日時:
たとえば、IEEE 754単精度の場合、仮数部は23ビットあります。
しかし、仮数部の最上位ビットが必ず1である (←正規化の結果) ことが分かっているなら、それを上記の23ビットに入れるのは無駄です。ここで、値が分かっている最上位ビットを除いて、代わりに24ビット目の値を入れます。これによって、23ビットの仮数部を使って、実質24ビット分の値を表現できるわけです。
この回答への補足
ご回答ありがとうございます。
お返事が遅れて申し訳ありません。
色々考えに考えたものの、
まだ理解に至らずに「?」が残ったままです・・・(汗)
>IEEE 754単精度の場合、仮数部は23ビットあります。
ここはわかりました。
>しかし、仮数部の最上位ビットが必ず1である (←正規化の結果)
これはIEEE754の特性の一つとして「仮数部の最上位ビットは必ず1である」という条件からですよね?
>ことが分かっているなら、それを上記の23ビットに入れるのは無駄です。
あ。わかったかもしれません。
つまり「仮数部の23ビットの領域に、24ビット目以降とされるビット列を入れる」ということですよね。
例えば
正規化前
「 0.0000000000100000000001111111111000」(小数部 34ビット)
↓ 正規化で「1」が省略される。
(最初の1までの 「0」10個 と 最初の1の「1」個が消える)
正規化後
「 0.00000000001111111111000 」(小数部 23ビット)
、
この場合だと、
第1少数点の1は除かれて、それ以降の第2小数点のビットのを含む23個のビットが表現されることとなる、ということですよね。
結果、
「 0.00000000001111111111000」 という値が仮数部として
表現されることになる。
一つ疑問なのですが、
省略されている「1」はビット上では見えないだけで、「存在はしている」という認識でよいでしょうか?
No.1
- 回答日時:
IEEE 754の場合、正規化をするのは「限られたビット数の中に少しでも多くの情報を詰め込むため」です。
この回答への補足
早速のご回答ありがとうございます。
「限られたビット数の中に少しでも多くの情報を詰め込むためのもの。」
という役割はわかったのですが、すみません。まだちょっと理解できなかったところがあります。
例えば
[10進数]
0.0000000000123456789012345678901234567890
このような、少数が第何位になる10進数を2進数化する際、
正規化を行っておくことで、少数点の表示できるところまで限界で表示できる、ということでしょうか?
まだちょっと理解に至っていなく、
質問も意味不明かもしれませんが、できましたら補足をお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- 情報処理技術者・Microsoft認定資格 情報技術の問題についてです。 10進数の−36を以下のような16ビットの浮動小数点表示にするといくつ 3 2022/05/21 19:53
- 計算機科学 8ビット浮動小数点数 0 1000 100 を10進法 8ビット浮動小数点数 1 1100 011 3 2022/10/28 08:07
- C言語・C++・C# C言語について。 5 2023/06/27 18:37
- 数学 至急!次の問題を教えてください。 ある市では、消防車の出動要請が平均して1時間当たり1回ある。 多く 2 2022/11/18 20:25
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- 数学 これって正しいんじゃないの? 「無理数を小数で表現すると、小数点以下に数字が無限に続きますが、それら 5 2022/05/29 23:56
- 医療事務・調剤薬局事務 どちらの薬局の方が安いか、判定お願いします 1 2022/09/22 17:26
- 分譲マンション マンション管理会社についてお聞きいたします。 5 2022/07/31 03:15
- 大学受験 受験から5年経ち再び理系大を目指し当時超絶苦手だった化学、物理、数学を教科書で勉強して3ヶ月、共通テ 4 2023/06/10 05:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
値が入っているときだけ計算結...
-
尿検査前日に自慰行為した時の...
-
病院側から早く来てくださいと...
-
【Excelで「正弦波」のグラフを...
-
リンク先のファイルを開かなく...
-
精子に血が・・・
-
MIN関数で空白セルを無視したい...
-
エクセルのラベルの値(文字列...
-
EXCELで条件付き書式で空白セル...
-
小数点以下を繰り上げたものを...
-
イタリアから帰国する際、肉製...
-
2つの数値のうち、数値が小さい...
-
精液の落とし方を教えてください
-
Excel 0目標に対して数字があ...
-
至急!尿検査前日にオナニーし...
-
excelでsin二乗のやり方を教え...
-
ある範囲のセルから任意の値を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
至急!尿検査前日にオナニーし...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
値が入っているときだけ計算結...
-
リンク先のファイルを開かなく...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
VLOOKUP関数を使用時、検索する...
-
尿検査の前日は自慰控えたほう...
-
MIN関数で空白セルを無視したい...
-
小数点以下を繰り上げたものを...
-
風俗店へ行く前のご飯
-
エクセルで空白セルを含む列の...
-
Excel 数値の前の「 ' 」を一括...
-
【Excelで「正弦波」のグラフを...
-
納豆食べた後の尿の納豆臭は何故?
-
EXCELで式からグラフを描くには?
-
ある範囲のセルから任意の値を...
おすすめ情報