CAFE

정보보관 게시판

부동소수점의 산술 연산

작성자JY, Jang|작성시간09.10.20|조회수18,758 목록 댓글 0

부동소수점 수의 산술 연산

 

부동소수점 수의 산술 :  가수와 지수를 분리해서 연산 처리한다.

 

부동소수점 덧셈과 뺄셈

1)  지수를 같게 조정하고,  덧셈과 뺄셈을 실행한다.

     - 즉, 지수가 작은 쪽을 지수가 큰쪽의 수로 조정 한다.

2) 덧셈과 뺄셈을 수행

3) 계산 결과 가수를 정규화 한다.

4) 이에 맞게 지수값 조절

 

Ex) 1.1100 * 2^4 + 1.1000 * 2^2

      --> 1.1000 * 2^2를 0.0110 * 2^4로 변경 한다.

        1.1100 * 2^4

    +)  0.0110 * 2^4

       10.0010 * 2^4  --->결과

 

  이를 정규화 하면

   0.1000 * 2^6 가 된다.

  혹은 1.0001 * 2^5 가 된다.

 

부동소수점 곱셈

 

1) 지수를 같게 조정하지 않는다.

2) 가수끼리 곱한다.

3) 지수기리 더한다.

4) 소수이하 자리는 정해진 자리에서 반올림 한다.

5) 계산 결과 가수를 정규화 한다.

 

X=mx * 2^a

Y=my * 2^b

X * Y  = (mx * my) * 2^(a+b)

 

Ex) X = 1.000 * 2^(-2) , Y = -1.010 * 2^(-3)

 

         1.000 

    *) -1.010 

     -1.010000   --->곱셈 결과

 

  지수부분은 부분만 더하므로

    (-2)+(-3) = -5

 

   그러므로

   2^(-2)  + 2^(-3) = 2^(-5) 

 

   최종 계산 결과는  

  -1.0100 * 2^(-5)

 

부동소수점 나눗 셈

 

1) 지수를 같게 조정하지 않는다.

2) 가수끼리 나눈다.

3) 지수끼리 뺀다.

4) 소수이하 자리는 정해진 자리에서 반올림 한다.

5) 계산 결과 가수를 정규화 한다.

 

X=mx * 2^a

Y=my * 2^b

X / Y  = (mx / my) * 2^(a-b)

 

Ex) X = 1.000 * 2^(-2) , Y = -1.010 * 2^(-1)

 

         1.000  / -1.010  = -0.1101

 

         -0.1101   --->나눗셈 결과

 

  지수부분은 부분만 빼므로로

    (-2)-(-1) = -1

 

   그러므로

   2^(-2)  + 2^(-1) = 2^(-1) 

 

   최종 계산 결과는  

     -0.1101 * 2^(-1)

 

 

 

문제) bias가 127이고 부호 표시가 있는 단정도 부동소수점  계산...

 

1) 69.6875를 정규화된 2진 부동소수점 수로 나타내보자.

 

    2진수로 변경하면

    1000101.1011(2)가 된다.

 

    이를 정규화 하면

   1.0001011011(2) * 2^6 가 된다.

   

   기수(base) : 127

   가수 : 1.0001011011(2)  

   지수 : 127 + 6 = 133 (지수가 6이고 Bias가 127이므로...)

      133을 7비트 2진수로 바꾸면 10000101(2)가 된다.

       

   0  10000101  000101101100000000000000      이것이 정답이다.

부호     지수      가수 

 

 

2) - 0.2를 정규화된 2진 부동소수점 수로 나타내보자.

 

    2진수로 변경하면

    -0.001100110011(2) 가 된다.

 

    이를 정규화 하면

   -1.100110011001100(2) * 2^-3 가 된다.

   

   가수 : -1.100110011001100(2)  

   지수 : 127 + (-3) = 124 (지수가 -3이고 Bias가 127이므로...)

            7비트 2진수로 바꾸면 01111100(2)가 된다.

           

  

   1  01111100  100110011001100110011001      이것이 정답이다.

부호     지수      가수 

 

 

3) 0xFC06 0000 을  IEEE754 단정밀도 부동소수점 수로 나타 내보자.

 

    - 교과서에는 연습 문제는 풀리지 않을 정도로 어려운 수치가있는데 신경 끄자.... 

    - 부호와 지수부분을 보면 0xFC가 된다.

    - 맨 앞의 부호가 1이므로 음수이다.

    - 지수는 0x7D이므로 127-125 =3, -3이 지수이다

    

   - 가수 부분은 0000 01100  00000000 00000000(2)

      

   1  1111101 00000110 00000000 00000000      이다.

부호     지수      가수 

 

    1.0000 0110  * 2^ (-3) 이다.

    이는 - 0.0010 0000 110 이다. 음수로 알고 계산 한다.

 

---------------------------------------------------------------------------------

    예를 들어 (참고로 보자)

     2진수, 1111.111 를 10진수로 바꿀 때 방법이다.

     헷갈리지 말고 참고 하도록......

      

     1 * 2^(3 )+ 1 * 2^(2 ) + 1 * 2^(1 ) +  1*2^0 +  1 * 2^(-1) +  1 * 2^(-2) +  1 * 2^(-3)

   = 1 * 8 + 1 * 4 + 1 * 2) +  1 * 1 +  1 * 1/2  +  1 * 1/4 +  1 * 1/ 8

   = 15.875 

---------------------------------------------------------------------------------    

 

    따라서 - 0.0010 0000 110 은 

     =  (1 * 2^-3) + (1 * 2^-9)  +  (1 * 2^-10)  

     =  (1 *  1/8) + (1 * 2^-9)  +  (1 * 2^-10)  

     = 0.125  +  0.001953 + 0.000977

     = 0.12793 이다

 

     답은 -0.12793       

 

이제 더이상 문제를 내지 않을 것이다.

2009년 10월 20일 새벽 1:59

    

 

 

다음검색
현재 게시글 추가 기능 열기
  • 북마크
  • 공유하기
  • 신고하기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼