고정 소수점 (Fixed Point)
고정 소수점 표현 방식은 소수점의 위치를 고정해놓고 소수를 표현하는 방식입니다.
예를 들어 32비트를 사용하는 경우, 앞의 16비트는 정수 부분과 부호 부분을 표현하고 나머지 16비트는 소수 부분을 표현합니다.
즉, 소수점의 위치를 고정시켜서 정수를 표현하는 부분과 소수를 표현하는 부분을 나눈다는 것입니다.
고정 소수점 표현 방식은 숫자 표현이 간단하기 때문에 구현하기가 편하고 연산 속도가 빠릅니다.
하지만, 표현 가능한 수의 범위가 적어서 활용하기 힘듭니다.
따라서, 컴퓨터에서는 이 방식을 잘 사용하지 않습니다.
부동 소수점 (Floating Point)
부동 소수점 표현 방식은 소수점의 위치를 고정시키지 않고 가수와 지수를 사용해 실수를 표현합니다.
여기서 가수는 유효숫자를 나타내며, 지수는 소수점의 위치를 나타내고 부호는 가수의 부호를 나타냅니다.
10진수 \(0.34_{10}\)을 2진수로 바꾸면 \(0.010101110_{2}\)이 됩니다.
이를 부동 소수점 표현 방식으로 나타내려면 먼저 정규형으로 바꿔야 합니다.
정규형은 정수 부분에 0이 아닌 수를 하나만 남기는 것으로 2진수를 1.xxxxxxx \(\times 2^{n}\)으로 나타내는 것을 말합니다.
\(0.010101110_{2}\)을 정규형으로 표현하면 1.0101110 \(\times 2^{-2}\)이 되는데 총 비트 수에 따라 각각을 표현하는 비트 수가 다르게 구성됩니다.
- 8비트 : 부호 1비트 + 지수 3비트 + 가수 4비트
- 16비트 : 부호 1비트 + 지수 5비트 + 가수 10비트
- 32비트 : 부호 1비트 + 지수 8비트 + 가수 23비트
- 64비트 : 부호 1비트 + 지수 11비트 + 가수 52비트
부동 소수점 표현 방식은 숫자가 항상 정규화된 형태로 표현되어 있기 때문에 산술 연산이 간단합니다.
또한, 불필요하게 선행되는 0을 저장하지 않기 때문에 표현할 수 있는 수의 범위와 정밀도가 증가합니다.
언더플로우와 오버플로우
8비트를 사용하는 경우, 표현할 수 있는 숫자의 범위는 다음과 같습니다.
가장 작은 절대값의 양의 실수 | \(0 \ 000 \ 0001_{(2)} = +0.1328125_{(10)}\) |
가장 작은 절대값의 음의 실수 | \(1 \ 000 \ 0001_{(2)} = -0.1328125_{(10)}\) |
가장 큰 절대값의 양의 실수 | \(0 \ 111 \ 1111_{(2)} =+31.0_{(10)}\) |
가장 큰 절대값의 음의 실수 | \(1 \ 111 \ 1111_{(2)} = -31.0_{(10)}\) |
여기서 가장 작은 절대값의 양의 실수와 가장 작은 절대값의 음의 실수 사이의 범위 부분을 표현하지 못하는 것을 "언더플로우"라고 합니다.
그리고 가장 큰 절대값의 양의 실수 이상 부분과 가장 큰 절대값의 음의 실수 이하 부분을 표현하지 못하는 것을 "오버플로우"라고 합니다.
'CS 지식 > 컴퓨터구조' 카테고리의 다른 글
[CS] ARM과 MIPS (0) | 2023.08.12 |
---|---|
[CS] 패리티 비트와 해밍 코드 (0) | 2023.08.12 |
[CS] 캐시 메모리 (0) | 2023.08.11 |
[CS] 컴퓨터의 구성 (0) | 2023.08.09 |