본문 바로가기
5장 컴퓨터 과학/Computer Architecture

[컴퓨터 구조] 부동소수점

2021. 6. 1.

부동소수점

부동소수점(floating point)는 이진 소수점의 위치가 고정되어 있지 않은 수로 표현하는 컴퓨터 연산이다. 부동소수점을 사용하면 부동소수점 숫자를 포함한 자료의 교환을 간단하게 한다. 숫자가 항상 부동소수점으로 표현된다는 것을 알고 있으므로 부동소수점 산술 알고리즘이 간단해진다. 불필요하게 선행되는 0을 소수점 오른쪽에 있는 실제의 숫자로 바꾸기 때문에 한 워드 내에 저장할 수 있는 수의 정밀도를 증가시킨다.

부동소수점 표현

float 부동소수점

부동소수점은 소수부분(faction)과 지수부분(exponent)로 나뉜다. 일반적으로 부동소수점 수는 (-1)s×F×2E 같은 형태를 갖는다. 그러나 부동소수점도 무한한 수는 아니기 때문에 오버플로우와 언더플로우가 발생한다.

오버플로우(overflow)는 양수 값을 갖는 지수가 지수 부분에 들어갈 수 없을 만큼 큰 경우이다. 언더플로우(underflow)는 음수 값을 갖는 지수가 지수 부분에 들어갈 수 없을 만큼 큰 경우이다.

double 부동소수점

언더플로우와 오버플로우의 발생을 줄이는 방법으로 지수 부분이 더 큰 다른 표현형식을 사용할 수 있다. C 언어에서는 이것을 double이라고 한다. 그리고 double 형식을 갖는 수의 연산을 2배 정밀도(double precision) 부동소수점 연산이라고 한다. 일반적인 연산은 단일 정밀도(single precision) 부동소수점이라고 한다.

컴퓨터가 표현할 수 있는 수와 실제 수의 주요한 차이는 컴퓨터 숫자는 크기가 제한되어 있고 따라서 제한된 정밀도를 갖고 있다는 것이다. 워드로 표현하기에 너무 큰 수나 너무 작은 수를 계산하게 될 수도 있다. 프로그래머는 이런 제약 조건을 잘 기억하고 여기에 맞추어 프로그램을 적절히 작성하여야 한다.

반응형

댓글