-
IEEE 754 부동 소수점 표준Software/C++ 2024. 8. 19. 11:12728x90
부동 소수점 (floating point)
부동 소수점은 이진법으로 소수를 표현하는 데 있어 정수부와 실수부를 구분하는 기준점이 고정되어 있지 않고 형태에 따라 변화하는 표현방식을 일컫는다.
부동 소수점의 특징
1. 고정 플로팅 방식에 비해 훨씬 넓은 범위의 실수를 표현할 수 있다.
2. 고정 플로팅 방식에 비해 실제 값을 얻을 때 연산 과정이 추가되기 때문에 필연적으로 속도가 느려진다.
3. 유효 숫자의 자리는 정해져있다.부동 소수점 표현 방식 IEEE 754
IEEE 754는 부동 소수점을 표현하는 가장 널리 쓰이는 표준이다.
32비트로 처리하는 Single precision (단정밀도)와 64비트로 처리하는 Double precision (배정밀도)가 있다.표현 원리는 다음과 같다.
- 표현하려는 소수가 양수면 부호비트가 0, 음수면 부호비트가 1로 표현한다.
- 절대값을 이진법으로 변환한다.
- 변환한 절대값을 정규화한다. (가수부를 한자리 자연수로 쉬프트 시키는 것.
ex ) 1101.1011 => 1.1011011 x 2^3
- 지수는 3, 가수부는 소수점 오른쪽 부분으로 1011011이 된다.
- 소수부는 부족한 비트수만큼 0으로 채워 총 23비트로 만든다.
- 지수는 부호비트가 없으므로 음수표현을 위해 바이어스 표현법을 사용한다. 총 8비트이므로 -127~128 사이의 값을 순서대로 대응시켜 표현한다. 따라서 00000000이 -127 , 11111111이 128이 된다.부동 소수점의 정확도 문제
- 실수를 정확하게 표현하지 못하는 경우가 발생한다.
- 교환법칙은 성립하지만 결합법칙이 성립하지 않는 경우가 발생한다.
- 분배법칙이 성립하지 않을 수 있다.728x90'Software > C++' 카테고리의 다른 글
Volatile 키워드 (0) 2024.08.14