더북(TheBook)

5.1.3 바이너리 표현과 추상 상태 기계

아쉽게도 C 표준에는 타입의 종류에 따른 연산의 결과가 모든 컴퓨터 플랫폼에서 완벽하게 정의되어 있지 않다. 예를 들어 부호 있는 타입의 부호 표현 방식과, double 타입의 부동 소수점 연산에 적용할 정밀도가 그렇다.1 이러한 표현에 대해 C 언어 규격에는 다음과 같은 두 가지 요소만으로 연산의 결과를 사전에 추론할 수 있어야 한다고만 정해 두고 있다.

피연산자의 값

특정한 플랫폼을 표현하는 고윳값(characteristic value)

예를 들어 size_t 타입 연산은 피연산자뿐만 아니라 SIZE_MAX 값을 확인할 때 확실히 결정된다. 이렇게 특정 플랫폼에서 타입의 값을 표현하는 것을 바이너리 표현(binary representation)C이라 부른다.

TAKEAWAY 5.6 타입의 바이너리 표현에 따라 연산의 결과가 결정된다.

일반적으로 이런 모델을 결정할 때 필요한 정보는 모두 C 프로그램 안에 있다. C 라이브러리 헤더는 이렇게 필요한 정보를 (SIZE_MAX와 같은) 이름 있는 값, 연산자, 함수 호출 등을 통해 제공한다.

 

 


  1 다른 국제 표준은 이런 사항에 대해 C 언어보다 훨씬 구체적으로 정해 두고 있다. 예를 들어 POSIX [2009] 표준은 특정한 방식으로만 부호를 표현하도록 정해 뒀고, ISO/IEC/IEEE 60559 [2011] 표준은 정규화된 부동 소수점 표현을 정의했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.