🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
浮動小数点

浮動小数点は、コンピュータが数値を扱う際に実数を表現する方法のひとつです。 数値を、それぞれの桁の値が並んでいる仮数部と、小数点の場所を示す指数部で表します。

Q&A

解決済

2回答

5469閲覧

浮動小数で0.375はどう表現する?

izuki_y

総合スコア65

浮動小数点

浮動小数点は、コンピュータが数値を扱う際に実数を表現する方法のひとつです。 数値を、それぞれの桁の値が並んでいる仮数部と、小数点の場所を示す指数部で表します。

0グッド

0クリップ

投稿2019/12/23 15:19

編集2019/12/25 14:19

いつもお世話になっております。
表題の件で質問させてください。

固定小数と浮動小数で同じ数値でどれだけ誤差が発生するのかを調査して欲しいと頼まれました。
どっちもよくわかりませんが、浮動小数を以下のサイトで勉強しました。

https://itmanabi.com/fixed-floating/

以下の説明で表題の0.375はどう表示させるかが記載されているのですが
イメージ説明

0 01111101 10000000000000000000000 ではないでしょうか?
指数部は変更できるはずなので、0.011の表記は0.11e-1でも1.1e-2でも良いですよね?

あとは浮動小数点で以下の要領で同じ数字を足しこんでいくと誤差はどうなるのでしょうか?(固定小数の場合は誤差が開いていくと認識していますが)
イメージ説明

上記の回答を頂いた上で、馬鹿でも分かる浮動小数の説明がありましたら是非教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

二進で、0.011 x 2^0 ですね。

インテル系CPUその他多くで使われている IEEE754 形式の、単精度浮動小数点数だとすると、
まず、仮数部を1以上2未満に正規化します。
0.011 x 2^0 = 1.1 x 2^(-2)

仮数部は整数部を省略して0.1、指数部は127を足すので125。
仮数部23bitは、 100 0000 0000 0000 0000 0000
指数部8bitは、 0111 1101
符号部1bitは、 0
これを並べて、0 0111 1101 100 0000 0000 0000 0000 0000
4bitずつ分かち書きにすると、
0011 1110 1100 0000 0000 0000 0000 0000

指数部は変更できるので0.11e-1でも1.1e-2でも良いんですよね?

上に書いた通り、仮数部を1以上2未満に正規化することが必要なので、だめです。

#追記
仮数部を正規化するのは、同じ数値が同じビット表現になるようにするためです。
単純比較(同じビットパターンかどうか)で、同じ数値かどうか判断できる。

指数部に127を足すのは、単純比較(ビットパターンを符号付整数値とみなしての比較)で、数値としての大小を判断できるようにするためです。
これはちょっとわかりにくいですが、いくつかのパターンを作って、確認してみてください。

投稿2019/12/23 16:31

編集2019/12/24 04:58
otn

総合スコア85882

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izuki_y

2019/12/25 14:29

ご回答ありがとうございます。 >同じ数値が同じビット表現になるようにするため 比較が簡単になるためですね。 >仮数部は整数部を省略して0.1、指数部は127を足すので125 という事は二進数の浮動小数から10進数を求める場合は逆に引く必要があると言うことですね。 これは腰据えて勉強しないと本当に分からないかもしれないです。 丁寧に教えて頂いて申し訳ないですが、今の自分の頭ではまだ理解できそうも無いです。 頂いた回答を読み直して考えてみます。 ありがとうございました。
guest

0

これは酷いサイトですね。
一見してIEEE754形式と見誤るような符号・指数・仮数のビット数で、説明無くIEEE754と全く無関係なオリジナル浮動小数点数を書いています。
こんなサイトを見るのは強く非推奨します。

0 01111101 10000000000000000000000 ではないのか?

です。自信を持ってください。

指数部は変更できるので0.11e-1でも1.1e-2でも良いんですよね?

IEEE754形式のことであれば、いけません。1.***eの形で表せる数はこの形に統一することになっています。

参考はとりあえずWikipediaですかね。
単精度浮動小数点数

投稿2019/12/24 00:04

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izuki_y

2019/12/25 14:22

ご回答ありがとうございます。 間違っていないようで安心しました。 と言ってもシミュレーターを使って検証した結果を書いただけなんですが(汗) >IEEE754形式のことであれば、いけません。1.****e*の形で表せる数はこの形に統一することになっています。 確かに書き手の気分で0.11を1100e-4とか書かれても困りますもんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問