>  기사  >  컴퓨터 튜토리얼  >  JAVA의 이중형 부동 소수점 연산에 대한 심층 분석

JAVA의 이중형 부동 소수점 연산에 대한 심층 분석

王林
王林앞으로
2024-01-15 09:57:221211검색

JAVA의 double형 부동 소수점 연산을 설명해야 합니다

더블 f=0.0005;

더블 i=3;

더블 d=f*i;

더블 f1=0.0005;

더블제이=3;

더블 d1=f1*j;

if(d==d1){

System.out.println("aaa");

} 이는 Java의 기본 데이터 유형을 자동 변수라고 합니다. 자동 변수는 리터럴 값의 데이터 크기와 수명을 알고 있으므로 속도상의 이유로 스택에 배치됩니다. 예를 들어 int a=3 int b=3이면 컴파일러는 먼저 int a=3을 처리하고 스택에서 변수 a에 대한 참조를 만든 다음 a를 사용하여 주소를 찾습니다. 리터럴 값이 3과 같습니다. 그렇지 않은 경우 리터럴 값 3을 저장할 주소를 연 다음 변수 b로 애플리케이션을 생성한 후 int b=3을 처리하고 리터럴 값 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의 이중형 부동 소수점 연산에 대한 심층 분석

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++에서 실제 변수를 나타내는 변수 유형입니다.

참조 출처: 백과사전 단정밀도

참조 출처: 백과사전-이중정밀도 부동 소수점

컴퓨터에서 부동소수점 표현하는 방법

부동 소수점은 정수 또는 고정 소수점 수(즉, 가수)에 특정 진수(일반적으로 컴퓨터의 경우 2)를 곱하여 얻습니다. 이 표현 방법은 진수 10을 사용하는 과학적 표기법과 유사합니다.

부동 소수점 숫자 a는 두 숫자 m과 e로 표현됩니다: a = m * b^e (b의 e 거듭제곱).

이러한 시스템에서는 기본 b(표기법 시스템의 기본)와 정밀도 p(즉, 저장에 사용할 비트 수)를 선택합니다. m(즉, 가수)은 ±d.ddd...ddd 형식의 p 자리 숫자입니다(각 비트는 0과 b-1을 포함하여 0과 b-1 사이의 정수입니다). m의 첫 번째 비트가 0이 아닌 정수이면 m을 정규화되었다고 합니다.

일부 설명에서는 별도의 부호 비트(s는 + 또는 -를 나타냄)를 사용하여 양수 또는 음수를 나타내므로 m은 양수여야 합니다. e는 지수입니다.

우리는 부동 소수점 숫자를 표현하기 위해 다음 3가지 방법을 사용할 수 있습니다:

1.BCD 코드.

2. 지수 코드 가수 표현.

3. 두 번째 방법을 변형하여 더 나은 방법을 얻을 수 있습니다. 먼저 N=M*RC, R=10으로 표현되는 부동소수점 숫자의 소수점을 끝으로 옮긴 후 M을 이진수 B로 변환한 후 C를 지수 코드로 사용하고 B를 가수로 사용하여 표현합니다. 지수 코드 가수 방법을 사용합니다.

예: 3.14159=314159*10^(-5).

314159는 이진수로 1001100101100101111로 표현됩니다.

이 방법을 사용하면 부동 소수점 숫자의 값을 정확하게 표현할 수 있을 뿐만 아니라 저장 공간을 최대한 활용할 수 있습니다.

JAVA의 이중형 부동 소수점 연산에 대한 심층 분석

추가 정보:

부동 소수점 단위(FPU)

부동소수점 연산은 정수 연산과 다르므로 산술 단위도 당연히 다릅니다. 초기 부동 소수점 프로세서는 CPU의 "외부 보조 프로세서"로 나타났습니다. x87 FPU는 특히 x86 프로세서와 함께 사용되는 부동 소수점 보조 프로세서 아키텍처를 나타냅니다.

다음 사항은 다음과 같습니다.

1. 부동 소수점 레지스터는 스택 구조를 채택합니다.

깊이는 8이고 너비는 80비트, 즉 80비트 레지스터가 8개입니다.

이름은 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비트 확장 정밀도 형식으로 변환합니다.

참고 출처: 백과사전-부동소수점

백과사전-부동소수점 표현

위 내용은 JAVA의 이중형 부동 소수점 연산에 대한 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 docexcel.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제