C.S.S#1 IEEE 754

김종하·2020년 2월 2일
2

비전공자의 컴퓨터 과학 이야기

첫 번째 주제는 바로 IEEE 754 부동소수점 표준이다.
기본적으로 컴퓨터는 소수를 표현하기 위해 부동소수점을 사용한다.
부동소수점 표기법은 수를 부호, 지수, 유효숫자 부분으로 나누어 표현하는 방법으로 정의된다.
IEEE 754 부동소수점 표준에는 32비트, 64비트, 43비트, 79비트에 대한 형식을 정의하고 있으며,
많은 프로그래밍 언어에서 부동소수점을 표현하기 위해 IEEE 표준을 따르고 있다.

그렇다면, IEEE 754 표준은 구체적으로 어떻게 표현될까?
많이 사용되는 32비트 부동소수점 형식에 대해 살펴보자.

32비트 부동소수점의 겨우 부호 비트(1bit), 지수부(8bit), 가수부(23bit) 구조로 이루어져 있다.
부호비트의 0은 양수, 1은 음수를 의미하며 지수부는 127 초과표기법을 사용한다. 그리고 가수부는 정규화 하여, 가장 왼쪽에 있는 1은 생략하여 표현한다.
쉬운 이해를 위해 10진수 15.25를 IEEE 754 방식 부동수소점으로 단계적 변환해 보도록 하자.

  1. 10진수 15.25를 2진수로 변환한다. => 1111.01
  2. 변환된 2진수( 1111.01 )을 정규화 한다. => 1.11101(가수부) * 2^3(지수부)
  3. 15.25는 양수임으로 부호비트는 0 이 된다. => 부호비트 = 0
  4. 지수부를 127 초과표기법을 적용한다. => 127 + 3 = 130
  5. 130을 2진수로 표현한다. => 10000010
  6. 가수부 1.11101 에서 가장 왼쪽 1을 생략한다 => 11101
  7. 부호비트, 지수부, 가수부를 합친다. => 0(부호비트)10000010(지수부)11101000000000000000000(가수부) = 0100 0001 0111 0100 0000 0000 0000 0000

이와같은 IEEE 754 32비트 부동소수점 표현법은 JAVA, C, C++ 과 같은 언어의 실수형 데이터 float 형에 적용되어있다.

*IEEE ? Institute of Electrical and Electronics Engineers 의 약자로 전기 전자 기술자 협회를 의미하며 전기전자공학에 관한 최대 기술 조직으로 주요 표준 및 연구 정책을 발전시키는 단체이다.

*부동소수점 ? 부동(떠돌이 소수)점 방식은 실수를 컴퓨터상에서 근사하여 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것

0개의 댓글