YZ ZONE

[ 컴퓨터구조 ]3.6 부동소수점 수의 표현 본문

IT/컴퓨터구조

[ 컴퓨터구조 ]3.6 부동소수점 수의 표현

러블리YZ 2023. 2. 6. 22:50

부동소수점 수의 표현

▣ 부동소수점 표현(floating-point representation) 

 소수점의 위치를 이동시킬 수 있는 수 표현 방법

수 표현 범위 확대

 

▣ 부동소수점 수(floating-point number)의 일반적인 형태

N=(-1)S M×BE
 , S : 수의 부호(sign)

M : 가수(mantissa) – 정수 부분

B : 기수(base)  10진수에서 10, 2진수에서 2  

E : 지수(exponent) – 승수

 10진 부동소수점 수(decimal floating-point number)

 [예] 274,000,000,000,000 → 2.74 x10^14

 0.00000000000274 → 2.74 x10^-12

 

 2진 부동소수점 수(binary floating-point number)

 기수 B = 2
 [예] 11.101 → 0.11101 x 2^2 , 0.00001101 → 0.1101 x 2^-4 

 단일-정밀도(single-precision) 부동소수점 수 : 32 비트
 복수-정밀도(double-precision) 부동소수점 수 : 64 비트

 

단일-정밀도 부동소수점 수 형식의 예

 S : 1 비트, E : 8 비트, M : 23 비트

▣ 지수(E) 필드의 비트 수 증가

▪➔표현 가능한 수의 범위 확장 

▣ 가수(M) 필드의 비트 수 증가

▪➔정밀도(precision) 증가
▣ 표현 가능한 수 크기의 범위

 [비교] 32-비트 고정소수점(fixed-point) 표현 방식의 경우 :
1.0 x 26-31 ~ 1.0 x 2^31  2.0 x 10^-9 ~ 2.0 x 10^9

 

같은 수에 대한 부동소수점 표현

▣ 같은 수에 대한 부동소수점 표현이 여러 가지가 존재

0.1101 × 2^5

11.01 × 2^3

0.001101 × 2^7

▣ 정규화된 표현(Normalized representation)

수에 대한 표현을 한 가지로 통일하기 위한 방법 (혼란 방지)

± 0.1bbb...b × 2^E

 위의 예에서 정규화된 표현은 0.1101 × 2^5

부동소수점 표현의 예 (0.1101 × 2^5)

▣ 부호(S) 비트 = 0
▣ 지수(E) = 00000101
▣ 가수(M) = 1101 0000 0000 0000 0000 000

▣ 소수점 아래 첫 번째 비트는 항상 1이므로, 반드시 저장할 필요는 없음(hidden bit) 

 가수 23 비트를 이용하여 소수점 아래 24 자리 수까지 표현 가능

바이어스된 지수 (biased exponent)

▣ 지수를 바이어스된 수(biased number)로 표현

▣ 사용 목적

 부동소수점 수들 간의 크기 비교가 용이
0(혹은 0에 매우 가까운 값)에 대한 표현에서 모든 비트들이 0이 되도록 함으로써, 0-검사(zero-test)가 용이

크기 비교 및 0-검사가 정수 경우와 같은 방법으로 가능해짐

8-비트 바이어스된 지수값들(8-bit biased exponents)

부동소수점 수의 표현 범위

32-비트 데이터 형식의 표현 가능한 수의 범위

IEEE 754 표준 부동소수점 수의 형식

▣ 부동소수점 수의 표현 방식의 통일을 위하여 미국전기전자 공학회(IEEE)에서 정의한 표준

 32-비트 단일-정밀도 부동소수점 수의 표현

 가수 : 부호화-크기 표현 사용

 지수 필드 : 바이어스 127 사용

 1.M × 2^E의 형태를 가지며, 소수점 아래의 M 부분만 가수 필드에 저 장 (소수점 왼쪽의 저장되지 않는 1 hidden bit 라고 부름)

IEEE 754 표준 부동소수점 수의 형식

예외(exception) 경우를 포함한 IEEE 754 표준

IEEE 754-2008에서 추가된 정의

 4배수-정밀도(quadruple-precision: 128-비트) 부동소수점 수의 표현

 가수 : 부호화-크기 표현 사용
 지수 필드 : 바이어스 16383 사용 (범위: -16382 ~ +16383)

IEEE 754-2008에서 추가된 정의