- 실수
3.625
를 컴퓨터에 저장한다고 생각해보자 - 위 수를 이진법으로 변환하면 정수부는
11
(2)의 값이 되고 소수부는0.101
(2) 가 된다. 참조 - 2진수10진수 변환 - 이진수로 변환한
11.101
을 컴퓨터에 저장할 때 사용할 수 있는 방법이 두가지가 있는데 이것이 고정 소수점과 부동 소수점이다.
- 수를 표현할 때 고정된 위치를 기준으로 정수부와 소수부로 나누어서 값을 표현하는 방식이다.
- 소수부에 할당된 비트의 숫자에 따라 정밀도가 달라진다.
- 단점으로는 소수점의 위치가 고정이어서 표현 가능한 실수의 범위가 제한적이라 잘 사용하지 않는다.
- 32비트의 수 일때 부호 표현 1비트, 정수 표현 15비트, 소수 표현 16비트를 사용하는 방법이다.
- 부호부를 0으로 지정한다(양수 0, 음수 1)
- 정수부인 11뒤에 15비트에 맞춰 0을 채운다 (000000000000011)
- 소수부의 101뒤에 16비트에 맞춰 0을 채운다 (1010000000000000)
부호 | 정수 | 소수 |
---|---|---|
0 | 000000000000011 | 1010000000000000 |
00000000000000111010000000000000
- 수를 표현할 때 고정 소수점 방식처럼 정수와 소수 부분으로 나누지 않고, 지수 부분과 가수 부분으로 나눠서 표현한다.
- 대표적인 부동 소수점 표현 방식이다.
- IEEE 754의 부동 소수점 표현은 크게 세 부분으로 구성되는데, 최상위 비트는 부호를 표시하는 데 사용되며, 부호 부분(1bit), 지수 부분(8bit), 가수 부분(23bit)이 있다.1)
- IEEE 754에는 32 비트 단정도, 64 비트 배정도, 43 비트 이상의 확장 단정도, 79 비트 이상의 확장 배정도에 대한 형식을 정의하고 있다.
- 부호부를 0으로 지정한다(양수 0, 음수 1)
- 소수점을 왼쪽으로 이동시켜 왼쪽에 수가 한개만 남도록 한다(11.101 -> 1.1101 * 21)
- 소수점을 제거하고 가수부의 비트 수에 맞춰 부족한 만큼을 0으로 채우면 이게 가수부가 된다 (11101뒤에 0을18개 붙여주면 된다 11101000000000000000000)
- 위에서 계산한 지수는 1이므로 (1.1101 * 21) 1에 Bias(127)를 더한 128을 이진법으로 표현한 10000000이 지수부가 된다.
- 위에서 구한 부모, 지수, 가수를 차례대로 표현해주면된다.
부호 | 지수 | 가수 |
---|---|---|
0 | 10000000 | 11101000000000000000000 |
01000000011101000000000000000000