본문 바로가기
백엔드

[CS] 고정소수점과 부동소수점

by BeforB 2021. 8. 6.
728x90

 

고정 소수점과 부동 소수점은 이진수만을 사용하는 컴퓨터에서 소수점이 포함된 실수를 표현하는 방식이다.

 

고정 소수점(Fixed Point)

  • 소수점이 고정된 형태이다.
  • 상위 1비트 부호비트(양수 0, 음수 1)와 정수부, 소수부로 구성된다.
  • 16bit의 경우 부호비트 1bit, 정수부 7bit, 소수부 8bit로 구성된다.
  • 표현법
    • 정수부 - 2진수 변환 방법 사용
    • 소수부 - 정수부의 반대(2를 곱해가면서 진행), 소수점부터 오른쪽으로 채워서 나머지는 0으로 채운다.
    # 10.375 (결과는 위에서 아래로)
    0.375 * 2 = 0.75 # 0
    0.75 * 2 = 1.5 # 1
    0.5 * 2 = 1 # 1
    
    # 10.375 => 1010.011

 

부동 소수점(Floating Point)

  • 고정 소수점 방식에 비해 더 다양한 범위의 숫자를 표현할 수 있으며 비트 수 대비 정밀도 측면에서 높기 때문에 대부분의 컴퓨터 시스템에서 사용한다. 그러나 근사값을 저장하기 때문에 정확하지는 않다.

 

표현 방식 - 대부분 언어에서 4byte float 형식이 32 bit를 따른다.

  • 단정밀도(Single-Precision)
    • 실수형 중 4byte float 형
    • 32bit(부호-1bit, 지수부-8bit, 가수부-23bit)
    • 지수부가 2^8 = 256개의 수 표현 가능, bias = 127
    • 0~127 구간은 음수를, 128~255 구간은 양수를 표현한다.
  • 배정밀도(Double-Precision)
    • 실수형 중 8byte double 형
    • 64bit(부호-1bit, 지수부-11bit, 가수부-52bit)
    • 지수부가 2^11 = 2048개의 수 표현 가능, bias = 1023
    • 0~1023 구간은 음수를, 1024~2047 구간은 양수를 표현한다.
  • 4배정밀도 - 128bit(부호-1bit, 지수부-15bit, 가수부-112bit)
  • 표현법
    1. 고정 소수점 방법을 이용하여 변환 후 정수부에 1만 남을 때까지 소수점을 왼쪽으로 이동(정수부가 0일 경우 오른쪽)# 10.375 -> 1010.011 -> 1.010011 * 2^3
      # 지수부 : 2, 가수부 : 010011
    2. 지수부지수부가 음수일 경우
      ex) 2^-10 일 경우 127-10 = 117 -> 1110101

      지수부가 양수일 경우
      ex) 2^3 일 경우 127+3 = 130 -> 10000010
    3. IEEE 754 표준을 따라 32비트를 사용하는 경우 bias=127을 더해서 사용한다.

 

728x90

댓글