Computer Science/컴퓨터 구조

[Computer Structure] 고정소수점 & 부동 소수점

findTheValue 2021. 8. 29. 14:49

고정 소수점 & 부동 소수점

  • 컴퓨터에서 '실수'를 표현하는 두 가지 방식

이진기수법

  • 십진법은 10^n에 해당하는 수가 될때마다 자릿수가 올라간다면 2진수는 2^n에 해당하는 수가 될때마다 자릿수가 올라간다.

  • 10진수를 2진수로 바꾸는 방법은 다음과 같다.

    • 10진수를 1이 될때까지 계속 2로 나눠가면서 나머지를 구하고 밑에서부터 거꾸로 읽으면 된다.
    • img
  • 그럼 소수점이 붙어있는 수는 어떻게 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자리의 지수부로 지수의 부호까지 표기하기 위함.(0127은 음수, 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