掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.26058

固定小数点・単精度浮動小数点・倍精度浮動小数点
投稿者---double(2006/02/09 23:28:13)


C言語の型についてお聞きします。
floatとdoubleがありますが、この2つは、どのように使い分ければ良いのかが、わかりません。floatが32ビットでdoubleが64ビットらしいですが、現在のPCは32ビットなのでfloatのような処理はできるのは、納得がいくのですが、64ビットの処理ができるというのが、よくわかりません。また、固定小数点との違いはなんですか?どのような歴史的経緯で出てきたのですか?精度はやはりあがるのでしょうか?詳しくご指導ください


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:固定小数点・単精度浮動小数点・倍精度浮動小数点 26060 si 2006/02/10 02:13:49
<子記事> Re:固定小数点・単精度浮動小数点・倍精度浮動小数点 26071 KING・王 2006/02/10 22:09:53


No.26060

Re:固定小数点・単精度浮動小数点・倍精度浮動小数点
投稿者---si(2006/02/10 02:13:49)


>floatとdoubleがありますが、この2つは、どのように使い分ければ良いのかが、わかりません。
表現できる実数の範囲が違いますので、その用途により使い分けるのでしょう。
実数演算自体は、現在使われているCPUの多くは、専用のレジスタを持っていますので、
floatとdoubleにそれほどの速度差はないと思います。
しかし、メモリアクセスを伴いますので、そこでは、速度差が出ると思います。
float 32bit 有効桁(10進) 6〜7桁  表現範囲 8.43e-37<=|x|<=3.37e38
double 64bit 有効桁(10進) 15〜16桁 表現範囲 4.19e-307<=|x|<=1.67e308
x86FPU内部 80bit 有効桁(10進) 19桁 表現範囲 3.4e-4932<=|x|<=1.2e4932

>現在のPCは32ビットなのでfloatのような処理はできるのは、納得がいくのですが、
整数演算と、浮動小数点演算では、数値の表現方法がまったく違います。
32ビットCPUというのは、汎用レジスタ(整数レジスタ)が32ビットと云うことです。
これらのレジスタで浮動小数点演算を行う場合は、エミュレートするためのライブラリが必要です。
通常、CPUに浮動小数点レジスタ(FPU)があれば、コンパイラは、このレジスタを使います。
また、最近のCPUには、上記の他に、MMXレジスタと云うものがあり、これでも浮動小数点演算が出来るそうです。
float 符号ビット 1,指数部bit 8,仮数部bit 24bit(最上位ビットは省略される)
double 符号ビット 1,指数部bit 11,仮数部bit 53bit(最上位ビットは省略される)
x86FPU内部 符号ビット 1,指数部bit 15,仮数部bit 64bit(最上位ビットは省略さない)

>64ビットの処理ができるというのが、よくわかりません。
手計算することを思い浮かべてください。
桁上(下)がりを考慮して多桁計算をしますよね、同じようなことをやってるだけです。

>また、固定小数点との違いはなんですか?どのような歴史的経緯で出てきたのですか?精度はやはりあがるのでしょうか?
これは、私には解かり兼ねますが、固定小数点演算と云うのは、人の考えた概念で、
単なる、表記方法かと思いますが?


この投稿にコメントする

削除パスワード

No.26061

Re:固定小数点・単精度浮動小数点・倍精度浮動小数点
投稿者---si(2006/02/10 02:33:06)


固定小数点演算の具体的な手法を解説してあるページ
http://www2.muroran-it.ac.jp/circle/mpc/old/algorithm/cg/fixedpoint/fixedpoint.html
http://homepage3.nifty.com/murasakigawa/tech/dsp/fixedpoint.html
http://www.ne.jp/asahi/oh/landd/prog_html/prog03.html


この投稿にコメントする

削除パスワード

No.26071

Re:固定小数点・単精度浮動小数点・倍精度浮動小数点
投稿者---KING・王(2006/02/10 22:09:53)


> 固定小数点との違いはなんですか?どのような歴史的経緯で出てきたのですか?
> 精度はやはりあがるのでしょうか?詳しくご指導ください

私の知っている固定小数点について書きます。
#間違っているようなら識者の方、フォローをお願いします。

コンピュータの内部では、2進数で値を表現するため、浮動小数点では、
0.1などの値や計算結果などには誤差がでます。
固定小数点とは、まず小数部分の桁数をn桁に固定し、小数第n位の値が、
整数の1の桁になるように、10のn倍した整数に直し、整数として計算します。
そうすると、固定した最小桁の値に関しても誤差がでないため、厳密な計算が可能となります。

例えば、小数3桁に固定すると、0.1は、内部的には100となり、
0.1を10回足す計算をした場合は、100を10回足し、1000の値を求めます。
そして、下3桁が小数なので、1000は、1.000となります。

浮動小数点の場合、0.1を10回足した場合、誤算の関係で、その値は1.0とは異なります。
(丸め方等により1.0となることもあるかもしれませんが。)




この投稿にコメントする

削除パスワード

No.26072

Re:固定小数点・単精度浮動小数点・倍精度浮動小数点
投稿者---REE(2006/02/10 22:22:01)


>> 固定小数点との違いはなんですか?どのような歴史的経緯で出てきたのですか?
>> 精度はやはりあがるのでしょうか?詳しくご指導ください
>
>私の知っている固定小数点について書きます。
>#間違っているようなら識者の方、フォローをお願いします。

間違ってます。
通常、固定小数と浮動小数の違いは、指数が固定か可変かの違いだけです。
10進数の0.1は、どちらでも正確には表せません。



この投稿にコメントする

削除パスワード

No.26073

Re:固定小数点・単精度浮動小数点・倍精度浮動小数点
投稿者---KING・王(2006/02/10 22:58:11)


>間違ってます。
>通常、固定小数と浮動小数の違いは、指数が固定か可変かの違いだけです。
>10進数の0.1は、どちらでも正確には表せません。

ご指摘ありがとうございます。
すいません、完全に勘違いしておりました。
siさんが提示されているページも確認しました。

私が、提示したのは固定小数点の発想の原点の部分ですね。
#仕事では、私が提示した方法で、誤差のない小数の計算をやることがありましたので。。。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧