
부동소수점 수의 표현
10진수에서는 과학적 표기(scientific notation)를 사용하여 아주 큰 수나 아주 작은 수를 간결하게 표현할 수 있다.
274,000,000,000,000 = 2.74 x 10^14
0.00000000000274 = 2.74 x 10^-12
이와 같이 소수점의 위치를 필요에 따라 이동시키는 표현 방법을 부동소수점 표현(floating-point representation)이라고 하며, 그와 같이 표현된 수를 부동소수점 수(floating-point number) 라고 부른다.

S = 수의 부호
M = 가수(mantissa)
B = 기수(base)
E = 지수(exponent)
앞서 보았던 2.74 x 10^14 의 경우
가수 M = 2.74
지수 E = +14
기수 B = 10
디지털 컴퓨터에서는 2진수 체계가 사용되므로 위의 방식으로 표현하는 수는 2진 부동소수점 수(binary floating-point number)가 된다. 이 경우에도 구성 요소는 10진수의 경우와 동일하며, 기수 B = 2 인 것만 다르다.
2진 부동소수점 수는 사용되는 비트 수에 따라 32bit 형식 혹은 64bit 형식으로 표현된다.

▲ 32bit 부동소수점 형식의 예
이러한 형식에서 가수(M)은 정밀도(precision)를 결정해주고, 지수(E)는 표현 가능한 수의 범위(range)를 결정한다.
즉, 가수 필드의 bit수가 많아질수록 수를 더 정확하게 표현할 수 있으며,
지수 필드의 bit수가 많아지면 | 2^E | 의 최댓값이 커지므로 표현할 수 있는 수의 범위가 증가하게 된다.
그러나 데이터 길이가 고정된 상태에서 어느 한 필드의 bit수를 증가시키면 다른 필드의 bit수가 감소하므로, 적절히 조정하는 것이 필요하다.

예제)
10진수 69를 IEEE754 형태로 표현하라. (단, 부호: 1비트, 지수: 8비트, 가수: 23비트이다)
풀이)
- 10진수를 2진수로 변환
- 정규화 (소수점을 1.xxx 형태로 변환하는것)
- 실제로는 1.xxx 전체가 가수이지만, 항상 모든 수가 1.xxx 로 끝나게끔 통일시켜두면 xxx 3비트만 저장하면 된다. 이는 4비트(4자리) 저장할 것을 한 자리라도 더 절감시키기 위해 사용하는 방식이다.
- 지수를 2진수로 변환 (단, 지수가 음수인 경우에는 2의 보수로 변환)
- 지수 바이어스 ( + 127, 01111111(2) )
- 정리하여 16진수로 표기
- 1000101
- 1.000101 * 2^6 ( ^6 = 소수점 6자리를 올렸기 때문 )
- 지수 6을 2진수로 >> 00000110
- + 01111111 = 10000101
- 부호(1bit) , 지수(8bit), 가수(23bit) (가수 = 2번에서 소수점 아래만 해당, .xxx )
0 10000101 0001010..........
= 0100001010001010...... 를 16진수로 보기좋게 변경, >> 4자리씩 끊기
0x4 2 8 A 0 0 0 ....
∴ 0x428A0000
'Computer Architecture' 카테고리의 다른 글
컴퓨터 구조 : 고성능 컴퓨터시스템 구조 (0) | 2021.06.09 |
---|---|
컴퓨터 구조 : 시스템 버스, I/O 및 인터럽트 (0) | 2021.06.09 |
컴퓨터 구조 : 보조저장장치 (0) | 2021.06.08 |
컴퓨터 구조 : 기억장치 (0) | 2021.06.04 |