メディア

浮動小数点演算のメリットQ&Aで学ぶマイコン講座(17)(3/4 ページ)

» 2015年08月17日 11時30分 公開

IEEE 754の数値フォーマット

 数値フォーマットは図1に示した通りです。数値を「符号+固定小数点値(1.0〜2.0)×2N」のようにコード化します。

 符号部は1ビットで0が「正」で、1が「負」です。単精度指数部(8ビット)はげた履き表現(バイアスまたはエクセス)と呼ばれる形式であり、実際の値に、バイアス値(127)を加算したものになります。

 指数部はバイアスされて常に正の値となるような形式となり、浮動小数点数同士の比較を単純にしています。単精度での指数レンジは、−126〜+127に127を加えて、1〜254となります、0と255は予約済みの値(特別な意味を持つ値)です。最後にはバイアスを減算して実際の指数を求めます。

 例として単精度で−7を表記してみましょう。負数なので、符号=1です。7を分解すると次のようになります。

7=1.75×4=(1+1/2+1/4)×4

=(1+1/2+1/4)×22=(1+2−1+2−2)×22

 指数は2にバイアスの127を加えるので次のようになります。

2+127=129=0b10000001

 仮数は小数点の右側だけなので、足りないビットの分は0で埋めて23ビットにします。

仮数=2−1+2−2=0b11000000000000000000000

 これらの結果から、次のように表記されます。

2進値:0b 1 10000001 11000000000000000000000

16進値:0×C0E00000

FPUのメリット

 FPUを使うと「実数」(C言語 float型)を無限に取り扱うことができるので、高度なアプリケーションへの対応が可能になります。FPUがない場合は、ソフトウェアによるエミュレーションが必要になります。この場合、固定小数点に移行するためのスケーリング処理と、飽和に関する問題のハンドリングのため、アルゴリズムの作り替えと固定小数点の実装が必要となり、かなり複雑なプログラムになります。

 FPUがあると、ハイレベルデザインツール(MATLAB/Simulinkなど)の使用が容易になり、高度なアプリケーションの開発が可能になります。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.