ホームページ  >  記事  >  コンピューターのチュートリアル  >  JAVAにおけるdouble型浮動小数点演算の詳細な分析

JAVAにおけるdouble型浮動小数点演算の詳細な分析

王林
王林転載
2024-01-15 09:57:221211ブラウズ

JAVAのdouble型浮動小数点演算については説明が必要です

ダブル f=0.0005;

ダブル i=3;

ダブル d=f*i;

ダブル f1=0.0005;

ダブル j=3;

ダブル d1=f1*j;

if(d==d1){

System.out.println("aaa");

}これは同等です。Java の基本データ型は自動変数と呼ばれます。自動変数にはリテラル値が格納されます。リテラル値のデータ サイズと有効期間は既知であるため、速度上の理由からスタックに配置されます。スタック内のデータは共有できます。たとえば、int a=3 int b=3 の場合、コンパイラは最初に int a=3 を処理し、最初にスタック上の変数 a への参照を作成し、次にアドレスを検索します。リテラル値が 3 である場合、リテラル値 3 を格納するアドレスを開いて int b=3 を処理し、変数 b を使用してアプリケーションを作成した後、リテラル値 3 を持つアドレスがあるかどうかを確認します。これが存在するので、3のアドレスを指します。==を使用した場合(アドレスが同じかどうかを判断する場合)、True

になります。

CPU浮動小数点演算とは

1. 以前はコプロセッサーと呼ばれていた浮動小数点パフォーマンス 486 は、以前の CPU には含まれていませんでした (8086~8087、80286~80287、80386~80387=80386DX、80486SX~80487=80486DX、586=586 587 ...)浮動小数点演算は、主に科学やマルチメディアで使用される高精度演算手法です。

2. 小数点を移動できる演算方法と理解できます。現在の速度 AMD>>Inter

3. 浮動小数点数は、-10.8、0.00、25.01 など、小数点以下の桁数が制限された有理数を指します。

4. 浮動小数点演算の場合、結果は浮動小数点数となり、計算結果の小数部分は保持されます。

例: 浮動小数点演算を使用する場合、100.0÷3.0=33.33333333。

####5 例えば、銃弾が壁に当たって土が落ちた場合、強力な浮動小数点計算を使えば、落ちてくる塵を表示できるかもしれません。

採用希望

C言語の単精度浮動小数点型と倍精度浮動小数点型の違い!一体どんな3・14なのでしょうか? 3 14159

3.14 は単精度、3.14159 は倍精度です。

両者の違いは次のとおりです:

1. さまざまな参考文献

1. 単精度: コンピューターが実数の近似を表現する方法を指します。

2. 倍精度: このデータ型は単精度データ型 (float) に似ていますが、float よりも精度が高くなります。

JAVAにおけるdouble型浮動小数点演算の詳細な分析

2. 占有スペースの違い

1. 単精度: 数値が負の場合、範囲は -3.402823E38 ~ -1.401298E-45、数値が正の場合、1.401298E-45 ~ 3.402823E38 です。

2. 倍精度: 倍精度型は 8 バイト (64 ビット) のメモリ空間を占有し、その値の範囲は -1.79769313486232E308 ~ 1.79769313486232E308 です。

3. 異なる特徴

1. 単精度: 値が上記の値より小さい場合、(IEEE 754 で規定されている) 仮数部の有効桁数が減少するため、精度が徐々に失われます。または、一部のシステムでは、処理プロセスを簡略化するために値 0 を指定します。

2. 倍精度: コンパイル中に占有されるメモリ空間はコンパイラによって異なりますが、C/C の実変数を表す変数型である double float データ型です。

参照元:百科事典単精度

参照元: Encyclopedia-Double Precision Floating Point

コンピュータで浮動小数点を表現する方法

浮動小数点は、整数または固定小数点数 (つまり、仮数) に特定の基数 (通常、コンピューターでは 2) の整数乗を乗算することによって得られます。この表現方法は、基数 10 を使用する科学表記法に似ています。 。

浮動小数点数 a は、2 つの数値 m と e で表されます: a = m * b^e (b の e 乗)。

そのようなシステムでは、基数 b (表記法の基数) と精度 p (つまり、ストレージに使用するビット数) を選択します。 m (つまり、仮数) は、±d.ddd...ddd の形式の p 桁の数です (各ビットは、0 と b-1 を含む 0 と b-1 の間の整数です)。 m の最初のビットがゼロ以外の整数の場合、m は正規化されたと呼ばれます。

一部の説明では、正または負を示すために別の符号ビット (s または -) を使用するため、m は正でなければなりません。 e は指数です。

次の 3 つの方法を使用して浮動小数点数を表現できます:

1. BCD コード。

2. 指数コードの仮数表現。

3. 2 番目のメソッドを変換して、より良いメソッドを取得できます。浮動小数点数の小数点を最後に移動してN=M*RC、R=10で表し、Mを2進数のBに変換し、指数コードをC、仮数部をBとして表します。指数コード仮数部方式を使用します。

例: 3.14159=314159*10^(-5)。

314159 はバイナリで 1001100101100101111 と表現されます。

この方法を使用すると、浮動小数点数の値を正確に表現できるだけでなく、記憶域を最大限に活用することもできます。

JAVAにおけるdouble型浮動小数点演算の詳細な分析

詳細情報:

浮動小数点ユニット (FPU)

浮動小数点演算は整数演算とは異なるため、演算単位も当然異なります。初期の浮動小数点プロセッサは、CPU の「外部コプロセッサ」として登場しました。 x87 FPU は、特に x86 プロセッサで使用される浮動小数点コプロセッサ アーキテクチャを指します。

次の点が含まれます:

1. 浮動小数点レジスタはスタック構造を採用しています。

深さは 8、幅は 80 ビット、つまり 8 つの 80 ビット レジスタです。

名前は ST(0) ~ ST(7)、スタックの先頭は ST(0)、番号はそれぞれ 0 ~ 7 です。

2. すべての浮動小数点演算は 80 ビットの拡張精度で実行されます。

3. 浮動小数点数は浮動小数点レジスタとメモリの間で転送されます。

(1) Float、double、long double 型の変数は、メモリ内で IEEE 754 の単精度、倍精度、拡張精度でそれぞれ表され、それぞれ 32 ビット、64 ビット、96 ビットを占有します (最初の 16 ビットは無効)。

(2) Float、double、long double 型の変数はすべて、浮動小数点レジスタで 80 ビットの拡張精度で表現されます。

(3) 浮動小数点レジスタからメモリへ: 80 ビット拡張精度フォーマットは 32 ビットまたは 64 ビットに変換されます。

(4) メモリから浮動小数点レジスタへ: 32 ビットまたは 64 ビットを 80 ビット拡張精度形式に変換します。

参照元: Encyclopedia-Floating Point

百科事典 - 浮動小数点表現

以上がJAVAにおけるdouble型浮動小数点演算の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はdocexcel.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。