FORTRAN 77 言語リファレンス |
付録 C
データの表現
問題のデータ要素の大きさに関わらず、データ要素の最上位ビットは、そのオブジェクトを表わすために必要なバイト列の最も小さい番号のバイトに格納されます。
この付録ではデータ表現を簡単に説明します。詳細は、『Fortran プログラミングガイド』および『数値計算ガイド』を参照してください。
実数、倍精度、4 倍精度
実数、倍精度、4 倍精度の数値データ要素は IEEE 規格に従って次の形式によって表わされます。ここで f というのは小数部におけるビットです。4 倍精度は SPARC のみです。
極端な指数
ゼロ (符号付き)
ゼロ (符号付き) はゼロの指数部とゼロの小数部により表わされます。
非正規数値
符号付き無限
符号付き無限 (すなわち疑似無限) は、指数部がとることのできる最も大きな値 (すべて 1) とゼロの小数部により表わされます。
非数 (NaN)
非数 (NaN) は、指数がとることのできる最も大きな値 (すべて 1) とゼロ以外の小数部により表わされます。
正規化された
REAL
およびDOUBLE
PRECISION
数値は、メモリーに格納されているよりビットの精度が 1 つだけ多い暗黙的先行ビットを持っています。たとえば、IEEEの倍精度は小数部に格納された 52 ビットに暗黙的な先行をする 1 ビットを加えた 53 ビットの精度になります。選択数値の IEEE 表現
極端な数値に対する演算
本節では、極端な数値と通常値による基本算術演算の結果について説明します。すべての入力は正であり、トラップ、オーバーフロー、アンダーフロー、またはその他の例外は起こらないものとします。
表 C-3 極端な値の省略形 Sub 非正規数 Num 正規化された数 Inf 無限 (正または負) NaN 非数 Uno 順序付けられない
表 C-4 極端な数値: 加算と減算 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
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 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
= < < < Uno Sub
>
< < Uno Num
> >
< Uno Inf
> > > = Uno NaN
Uno Uno Uno Uno Uno
X
かY
のどちらかがNaN
であれば、X.NE.Y
は .TRUE
. であり、
その他 (.EQ
.、 .GT
.、 .GE
.、 .LT
.、 .LE
.) は .FALSE
. です。- +0 比較 は -0 に等しくなります。
- いずれかの引数が
NaN
であれば、MAX
またはMIN
の結果は未定義です。アーキテクチャによるビットとバイト
データ、すなわちビットとバイトが並べられる順序は、VAX コンピュータと SPARC コンピュータ間では異なっています。
32 ビット整数のバイトは、アドレス n から読み取られると、以下に示すようにレジスタに入ります。
表 C-8 Intel と VAX コンピュータの場合のビットとバイト 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 コンピュータの場合のビットとバイト 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) 形式などの標準ネットワーク形式を使用すれば、問題は起きません。
- アーキテクチャ間におけるラスタグラフィックスイメージの移植。プログラムがバイナリ形式のグラフィクスイメージを使用しており、それらのデータが SPARC システムルーチンにより生成されるものとは異なるバイト順序付けになっていれば、変換する必要があります。
- アーキテクチャ間において、文字から整数または整数から文字へ変換を行う場合は、XDR を使用しなければなりません。
- 異なるバイト順序のアーキテクチャで生成されたバイナリデータを読み取る場合は、そのデータをフィルタにかけて、バイト順序を正しくする必要があります。
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |