고정 소수점 & 부동 소수점
- 컴퓨터에서 '실수'를 표현하는 두 가지 방식
이진기수법
십진법은 10^n에 해당하는 수가 될때마다 자릿수가 올라간다면 2진수는 2^n에 해당하는 수가 될때마다 자릿수가 올라간다.
10진수를 2진수로 바꾸는 방법은 다음과 같다.
- 10진수를 1이 될때까지 계속 2로 나눠가면서 나머지를 구하고 밑에서부터 거꾸로 읽으면 된다.
그럼 소수점이 붙어있는 수는 어떻게 2진수로 변환할까?
- 정수부의 반대로 2를 곱해주며 1이나 0을 뽑아내고 0이 나오면 종료한다.
- 결과를 밑에서부터가 아니라 위에서 부터 읽어준다
- ex.) 0.625x2 = 1 + 0.25, 0.25x2 = 0+ 0.5, 0.5x2 = 1 + 0.0
- 이를 위에서 부처 읽어주면 0.101이된다.
고정 소수점(Fixed Point)
- 소수점이 찍힐 위치를 미리 정해놓고 소수를 표현하는 방식(정수부 + 소수부)
- ex.) -3.141592는 부호(-), 정수부(3), 소수부(0.141592) 3가지 요소로 이루어짐
- 각 1비트, 15비트, 16비트로 총 32비트크기.
- 10진수를 2진수로 바꾼 겨로가를 그대로 박아 넣는 형식.
- 장점 : 실수를 정수부와 소수부로 표현하여 단순하다, 컴퓨터는 정수 연산을 위해 설계된 하드웨어를 고정소수점 연산에 재사용할 수 있다. 분수 계산에 매우 강력함.
- 단점 : 표현의 범위가 너무 적어서 활용하기 힘들다.
- 실수를 다루는 범용 시스템에서는 거의 안쓰이고 높은 정밀도가 필요없는 소규모 시스템에선 간혹 쓰인다.
부동 소수점(Floating Point)
정규화를 통해 소수점을 ''이동''시킨다
실수를 가수부 + 지수부로 표현한다.
가수 : 실수의 실제값
지수 : 크기를 표현.(가수의 어디쯤에 소수점이 있는지 나타냄)
즉 지수의 값에 따라 소수점이 움직이는 방식을 활용한 실수 표현 방법.
지수가 음수일때를 대비해 bias를 127로 주고있다 즉 지수n에 bias를 더한 값을 지수부에 넣는다는 소리.(64비트에서는 1023)
(8자리의 지수부로 지수의 부호까지 표기하기 위함.(0
127은 음수, 128255는 양수를 표기하기 위함))float는 32비트 체계, double은 64비트 체계 / floating point, double-precision
소수점의 위치가 고정되어 있지 않다.
부호 1비트, 지수부 8비트, 가수부 23비트
장점 : 표현할 수 있는 수의 범위가 넓어진다
단점 : 오차가 발생할 수 있다.(2를 곱해 올라가는 방식때문에. 너무 길어질 수 있음.)
정규화
- 2진수를 1.xxxxxx * 2^n꼴로 바꾸는 것.
- ex.) 111.101(2) => 1.11101 * 2^2
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
[Computer Structure] CPU (0) | 2021.09.01 |
---|---|
[CS] 캐시(CACHE) (0) | 2021.07.09 |
[CS] Interrupt & Context Switching (0) | 2021.07.07 |