IEEE floating-point standard 를 설명한 Wikipedia Site
http://en.wikipedia.org/wiki/IEEE_754
1학기때 수치해석에서 재미있게 배웠던 것 같은데.. 막상 어셈블리 시간에 또 배우니까 헷갈린다 -_-;;

32bit Single Precision(단정도 실수)

부호비트

(significant)
1bit

지수부

(exponent)
8bit

가수부

(mantissa)
23bit

 

 

  64bit Double Precision(배정도 실수)

부호비트
1bit

지수부
11bit

가수부
52bit

 

 

  80bit Exitended Precision(확장정도 실수)

부호비트
1bit

지수부
15bit

1

가수부
63bit

 

 ※ (-1)s * 1.m * 2e - bias 형식으로 나타내는 것을 정규화라고 하며 각 s, m, e값을 메모리에 저장하게 된다.

 

마이너스 지수를 표현하기 위해서 지수부가 표현가능한 범위에서 bias값을 빼게 된다.

 

예를 들어 64bit Double Precision에서는 지수부가 211 = 2048 이므로 (1024 - 1)을 빼면 음수가 표현 가능하게 되므로

 

bias는 1023이 된다.

 

 

  64bit Double Precision 변환 예제

 

 462.5를 2진수로 변환하면 111001110.1 이다. 이를 정규화 시키면 아래와 같이 된다.

    ∴ (-1)0 × 1.110011101 × 28

 

 부호는 양수이다

    ∴ 부호비트(s) = 0

 

정규화할 경우 첫 자리는 언제나 1이므로 생략한다(1비트를 더 사용할수 있게된다)

    ∴ 가수부(m) = 110011101

 

 e - bias = 8 이므로 (64bit Double Precision에서 bias는 1023이다)

    ∴ 지수부(e) = 8 + 1023 = 1031 = 10000000111

 

메모리에 저장되는 값은

0

100 0000 0111

1100 1110 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

 



시험이 내일인데 IEEE floating-point standard 를 보고 있다.. 당연한 것인데 개념을 잘못 이해했나?
익숙하지 않아서 그럴 것이다 (주절주절)
Buy me a coffeeBuy me a coffee

+ Recent posts