Computer Science/Computer Architecture

[컴퓨터구조] Lecture 10: Arithmetic for Computers - Part2

kangkyunghyun 2026. 2. 8. 16:30
728x90
반응형

경희대학교 김정욱 교수님의 컴퓨터구조 강의를 기반으로 정리한 글입니다.

Floating Point

  • 위 코드는 멈추지 않고 무한히 반복
  • Floating Point: 소수점 위치를 고정하지 않고 유효 숫자를 나타내는 가수 부분, 소수점 위치를 풀이하는 지수 부분으로 나누어 표현

Scientific notation

  • 소수점 앞의 수는 한 자리 수
  • 소수점 앞 한 자리 수는 1~9 사이 값이어야 함
  • 뒤에 곱해지는 형태는 지수 형태

Normalized scientific notation (Binary)

  • 소수점 앞의 수는 한 자리 수
  • 소수점 앞 한 자리 수는 1
  • 뒤에 곱해지는 형태는 지수 형태

  • Three advantages
    • 소수점의 위치를 변경하는 것이 가능
    • 모든 소수점 표현 알고리즘이 같은 형태를 공유하고 있기 때문에 지속성(consistency)을 유지
    • 한 워드에 저장되는 숫자의 정확도를 높임

Floating Point Representation

Single Precision

  • 32비트 데이터만으로는 음수, 양수, int, float 판별 불가능 → instruction을 통해 정체성 부여
  • sign(1 bit): 0일 때 양수, 1일 때 음수
  • exponent(8 bits): 지수 부분 value
  • fraction(23 bits): 소수점 아래 value
  • overflow와 underflow가 일어날 수 있음

Double Precision

  • 64비트 데이터
  • sign(1 bit), exponent(11 bits), fraction(52 bits)
  • 메모리 상에서 2 word 단위

IEEE 754

  • 부동소수점을 표현하는 가장 널리 쓰이는 표준어

  1. 음수와 양수 지수 비교가 어려움 → exponent를 unsigned로 해석
  2. 예외적인 상황 고려 필요 → exponent 값이 모두 0이거나 모두 1인 경우는 예외적인 상황으로 고려함

Biased notation

  • Bias 값을 127로 두고 bias와 exponent의 차이로 부호 결정

  • Range(single precision)
    • 최소값: Exponent: 8 bits → 00000001 = 1 → 2^(1-127) = 2^(-126) Fraction: 00000000..
    • 최대값: Exponent: 8 bits → 11111110 = 254 → 2^(254-127) = 2^127 Fraction: 11111111111..
  • Range(double precision)
    • 최소값: Exponent: 11 bits → 00000000001 = 1 → 2^(1-1023) = 2^(-1022) Fraction: 00000000..
    • 최대값: Exponent: 11 bits → 11111111110 = 2046 → 2^(2046-1023) = 2^1023 Fraction: 11111111111..

Zero

  • Exponent: 00…00, Fraction: 0
  • 1.0000 0000 0000 0000 0000 000 X 2^(-127)

Denormailized number

  • 표현할 수 있는 범위보다 작은 수를 표현할 때
  • Exponent: 00…00, Fraction: Nonzero
  • 0.xxx로 표현, Exponent에 1을 넣기로 약속

  • 최소값: 2^(-149)

Infinite

  • Exponent: 11…11, Fraction: 0

NaN (Not a Number) - 0/0

  • Exponent: 11…11, Fraction: Nonzero

Floating Point Addition

10진수

  • 지수성이 큰 것으로 맞춘다
  • 4개의 decimal만 남긴다

  • 더한다

  • normalize 해서 overflow, underflow를 확인

  • -126 < 2 < 127 → OK
  • 4자리까지만 남기니까 반올림(round)

2진수

  • 지수성이 큰 -1로 맞춘다
  • 4자리만 남긴다

  • 더한다

  • normalize 해서 overflow, underflow 확인

  • round 할 필요 없음
  • 다시 10진법으로 표현

Floating Point Mulitiplication

10진수

  • 지수 계산

  • 곱셈 계산 후 normalize

  • 4개의 수만 남긴다

2진수

  • 지수 계산

  • 계산하고 normalize

  • 반올림 필요 없음
  • 부호 결정

  • 10진수 변환

728x90
반응형