블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday

    1. IEEE 754

    위키백과 ― 우리 모두의 백과사전.

    IEEE 754컴퓨터에서 부동소수점를 표현하는 가장 널리 쓰이는 표준이다. ±0 등의 수와 무한, NaN 등의 기호를 표시하는 법과 이러한 수에 대한 연산을 정의하고 있다.

    IEEE 754에는 32 비트 단정도(single-precision), 64 비트 배정도(double-precision), 43 비트 이상의 확장단정도(거의 쓰이지 않음), 79 비트 이상의 확장배정도(일반적으로 80비트로 구현됨)에 대한 형식을 정의하고 있다. 이중 32 비트 단정도는 반드시 구현해야 하며, 다른 형식은 선택사항이다. 많은 프로그래밍 언어에서 IEEE 표준을 따르도록 정의하고 있다. 예를 들어 C에서는 float는 단정도, double은 배정도와 대응된다.

    구조

    IEEE 754의 부동 소수점 표현은 크게 세 부분으로 구성되는데, 최상위 비트는 부호를 표시하는 데 사용되며, 지수 부분(exponent)과 가수 부분(fraction/mantissa)이 있다.

     
     
    2. 15.357을 IEEE 754표준 형식으로 표현하기
     
    1) 우선 32비트 단정도(single) 실수는
        부호 비트 : 1, 지수(exponent) 비트 : 8, 가수(mantissa) 비트 : 23 의 자릿수로 표현 됩니다.
        15.357은 양수이므로 부호비트는 당연히 0이 되구요.
        아래에서 지수와 가수에 대해 알아 보죠.
     
    2) 10진수 15.357을 2진수로 표현합니다.
      15(10) = 1111(2)  <-이건 쉬우니까 설명 패쓰
      .357(10) = 0.0101101101100100010110...(2)
         <- 0.357에 계속 2를 곱해갑니다.
       0.357 * 2 = 0.714  <= 소수점 왼쪽 자리가 0 이므로  0.0
       0.714 * 2 = 1.428  <= 소수점 왼쪽 자리가 1 이므로  0.01  (이제 1을 버립니다)
       0.428 * 2 = 0.856  <= 소수점 왼쪽 자리가 0 이므로  0.010
       ....
       위의 과정을 1.0이 나올 때까지 반복합니다.
       1.0이 안나오지만, 23 비트로 표현해야 하는 제약이 있기 때문에
       0.01011011011001000101101 까지만 계산을 했습니다.
     
    3) 이제 10진수 15.357은 2진수 1111.01011011011001000101101 인 것을 알았습니다.
     
    4) 정규화를 합니다. 소수점 왼쪽에 1만 나오도록 말이죠.
        즉, 1111.01011011011001000101101 = 1.11101011011011001000101101 * 2^3 입니다.
        마지막에 2의 3제곱을 한 것은 소수점이 옮겨졌기 때문에 붙은 것입니다.
        바로 이 부분이 "지수(exponent)부"이죠.
        그리고 앞의 1.11100.... 부분은 가수입니다.
     
    5) 정리하면,
        부호 : 0
        지수 : 십진수 3 = 이진수 11
        가수 : 1110101101101100100010 (23자리 이진수)
     
     6) 마지막으로 위의 그림처럼 부호, 지수, 가수를 연결하기 전에
         지수 + 바이어스 상수 (십진수 127, 이진수 10000000)을 합니다.
         결국 지수는 10000011 이 됩니다.

      답 : 0100 0001 0111 0101 1011 0110 0100 0110 (2진수)
         41 75 B6 46 (16진수)

    출처 : http://k.daum.net/qna/view.html?qid=3wykn&l_cid=QCA&l_st=1&returl=%2Fqna%2Flist.html%3Fstatus%3D0%26category_id%3DQCA%26
    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함