FORTRAN 77 言語リファレンス ホーム目次前ページへ次ページへ索引


付録 C

データの表現

問題のデータ要素の大きさに関わらず、データ要素の最上位ビットは、そのオブジェクトを表わすために必要なバイト列の最も小さい番号のバイトに格納されます。

この付録ではデータ表現を簡単に説明します。詳細は、『Fortran プログラミングガイド』および『数値計算ガイド』を参照してください。

実数、倍精度、4 倍精度

実数、倍精度、4 倍精度の数値データ要素は IEEE 規格に従って次の形式によって表わされます。ここで f というのは小数部におけるビットです。4 倍精度は SPARC のみです。

(-1) 符号 * 2 指数 - バイアス *1.f
   

表 C-1   浮動小数点表現

単精度 倍精度 符号
符号
ビット 31 ビット 63 ビット 127
指数部
ビット 30-23
バイアス 127
ビット 62-52
バイアス 1023
ビット 126-112
バイアス 16583
小数部
ビット 22-0 ビット 51-0 ビット 111-0
範囲の近似値
3.402823e+38
1.175494e-38
1.797693e+308
2.225074e-308
3.362E-4932
1.20E+4932


 

極端な指数

ここでは、「極端な指数」について説明します。

ゼロ (符号付き)

ゼロ (符号付き) はゼロの指数部とゼロの小数部により表わされます。

非正規数値

非正規数値の形式は次のとおりです。

(-1) 符号 * 2 1-バイアス *0.f

ここで f は有効数字を示すビットです。

符号付き無限

符号付き無限 (すなわち疑似無限) は、指数部がとることのできる最も大きな値 (すべて 1) とゼロの小数部により表わされます。

非数 (NaN)

非数 (NaN) は、指数がとることのできる最も大きな値 (すべて 1) とゼロ以外の小数部により表わされます。

正規化された REAL および DOUBLE PRECISION 数値は、メモリーに格納されているよりビットの精度が 1 つだけ多い暗黙的先行ビットを持っています。たとえば、IEEEの倍精度は小数部に格納された 52 ビットに暗黙的な先行をする 1 ビットを加えた 53 ビットの精度になります。

選択数値の IEEE 表現

以下の数値は dbx により示された 16 進表現です。

表 C-2   選択数値の IEEE 表記
単精度 倍精度
+0 00000000 0000000000000000
-0 80000000 8000000000000000
+1.0 3F800000 3FF0000000000000
-1.0 BF800000 BFF0000000000000
+2.0 40000000 4000000000000000
+3.0 40400000 4008000000000000
+ 無限 7F800000 7FF0000000000000
- 無限 FF800000 FFF0000000000000
非数 7Fxxxxxx 7FFxxxxxxxxxxxxx


極端な数値に対する演算

本節では、極端な数値と通常値による基本算術演算の結果について説明します。すべての入力は正であり、トラップ、オーバーフロー、アンダーフロー、またはその他の例外は起こらないものとします。

表 C-3   極端な値の省略形 
省略形 意味
Sub
非正規数
Num
正規化された数
Inf
無限 (正または負)
NaN
非数
Uno
順序付けられない


  

表 C-4   極端な数値: 加算と減算
左オペランド 右オペランド
0
Sub
Num
Inf
NaN
0 0 Sub Num Inf NaN
Sub Sub Sub Num Inf NaN
Num Num Num Num Inf NaN
Inf Inf Inf Inf 注意を参照 NaN
NaN NaN NaN NaN NaN NaN


 

注意: Inf±Inf の場合: Inf + Inf = Inf、Inf - Inf = NaN

  

表 C-5   極端な数値: 乗算
左オペランド 右オペランド
0
Sub
Num
Inf
NaN
0
0 0 0 NaN NaN
Sub
0 0 NS Inf NaN
Num
0 NS Num Inf NaN
Inf
NaN Inf Inf Inf NaN
NaN
NaN NaN NaN NaN NaN


 

上記において、NS は Num か Sub のどちらかの結果が可能であることを意味します。

  

表 C-6   極端な数値: 除算
左オペランド 右オペランド
0
Sub
Num
Inf
NaN
0 NaN 0 0 0 NaN
Sub Inf Num Num 0 NaN
Num Inf Num Num 0 NaN
Inf Inf Inf Inf NaN NaN
NaN NaN NaN NaN NaN NaN


 

  

表 C-7   極端な数値: 比較
左オペランド 右オペランド
0
Sub
Num
Inf
NaN
0
= < < < Uno
Sub
>
< < Uno
Num
> >
< Uno
Inf
> > > = Uno
NaN
Uno Uno Uno Uno Uno


 

以下の点に注意してください。

アーキテクチャによるビットとバイト

データ、すなわちビットとバイトが並べられる順序は、VAX コンピュータと SPARC コンピュータ間では異なっています。

32 ビット整数のバイトは、アドレス n から読み取られると、以下に示すようにレジスタに入ります。

表 C-8   Intel と VAX コンピュータの場合のビットとバイト
バイト n+3
バイト n+2
バイト n+1
バイト n
31 30 29 28 27 26 
25 24 
 23 22 21 20 19 18 
17 16 
 15 14 13 12 11 10 
09 08 
 07 06 05 04 03 02 
01 00 
最上位


       最下位


  

表 C-9   680x0と SPARC コンピュータの場合のビットとバイト
バイト n
バイト n+1
バイト n+2
バイト n+3
31 30 29 28 27 26 
25 24 
 23 22 21 20 19 18 
17 16 
 15 14 13 12 11 10 
09 08 
 07 06 05 04 03 02 
01 00 
最上位


            最下位


   

これらのシステムにおいては、各バイトの番号の付け方が異なっていても、各ビットには同じように番号が付けられています。

注意すべき点は次のとおりです。

マニュアルページの xdr(3N) も参照してください。


サン・マイクロシステムズ株式会社
Copyright information. All rights reserved.
ホーム   |   目次   |   前ページへ   |   次ページへ   |   索引