[컴퓨터구조]Floating point 부동소수점 계산 IEEE754 Exponent Fraction

김말이·2023년 11월 22일
0

부동소수점 계산

x=(1)s(1+Fraction)2(Exponent+Bias)x = (-1)^s*(1+Fraction)*2^{(Exponent+Bias)}
  • Bias: single - 127 / Double - 1023
  • 비트 자릿수: single - 8, 23 / double - 11, 52
    • Single = 32bit = 1+8+23
    • Double = 64bit = 1+11+52

예시 문제

-0.75 변환하기

-0.75 
= -3/4  // 이진수로 변환하기 쉬운숫자 기준 2의배수 뽑아내기
= -11(2)/2^2
= -11(2) * 2^(-2)
= -1.1(2) * 2^(-1)  // Fraction 부분 1.XX로 맞춰주기
= (-1)^1 * 1.1 * 2(-1)

결과

  • S = 1
  • Fraction = 1 = 10000000000 (11자리)
  • Exponent
    -1 = Exponent - Bias
    -1 = Exponent - 127
    Exponent = 126 = 01111110(2)

= 10111111010000000000(2)

덧셈

문제: 1.0110 X 2^3 + 1.1000 X 2^2
1. 2의 진수 맞추기

  • 1.0110 X 2^3 + 0.1100 X 2^3
  1. 더하기
  • 10.0010 X 2^3
  1. 1.XX 형태로 맞추기
  • 1.0001 X 2^4

곱셈

문제: (1.0110 X 2^3) X (1.1100 X 2^2)
1. 따로따로 곱하기

  • (1.0110 X 1.1100) X (2^3 X 2^2)
  • 10.01101000 X 2^5
  1. Normalize + Over/Underflow 확인 -> 경우에 따라 반올림
  • 1.001101 X 2^6

여담...

IEEE754 변환 과정에서 Fraction이 1이 나왔는데 왜 00000001이 아니라 10000000이지? 라는 의문이 들어 삽질을 조금 했다... 개멍청... 1.XXX의 형태라는 것을 너무 중요하게 생각한 나머지 Fraction을 완전히 별개의 값으로 생각해버렸다. 하지만 원래 fraction은 이진법 형태의 소수점 아래 값이라는걸... 잊지마요

profile
공부해서 남주자

0개의 댓글