수의 표현

1. 수 표현

  ⓐ 수의 기초

    - 2진 법은 0b를 앞에 붙여 사용하기도 한다. 오른쪽 부터 왼쪽으로 갈수록 1씩 증가하는 2의 제곱이다.

  ⓑ 16진법은 0x로 시작하며 컴퓨터가 데이터를 저장 할 때는 한 바이트(8비트)단위로 저장하므로, 16진수 하나가 정확히 4비트를 표현할 수 있기때문에 16진수 2개로 한바이트를 표현할 수 있다.

ex) 0xFF = 0b11111111 = 255;

     0xB052 = 45,138;


2. 부호 있는 정수와 부호 없는 정수

  ⓐ 부호 없는 32비트 정수를 나타내려면  0x00000000부터 0xFFFFFFFF(4,294,967,295)까지가 된다.


  ⓑ 부호 있는 32비트 정수를 나타내려면 2의 보수를 사용한다.

    - 0xFFFFFFFF이 -1을 나타내고 음수는 여기서 하나씩 감소하며 나타낸다. 최상위 비트가 1인 수는 음수다.

    - 0x00000000부터 0x7FFFFFFF까지 양의 정수이고 0x80000000부터 0xFFFFFFFF까지 음의 정수다.


2의 보수란 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수이다. 


2. 고정소수점 표현법

  ⓐ 정수부를 표현할 비트와 소수부를 표현할 비트의 수를 임의로 고정한다.

    - 정수부는 1씩 증가하는 2의 제곱을 나타내고 소수부는 1씩 증가하는 2의 제곱의 역을 나타낸다.

(큰수를 표현하기에 무리가 있다. 그래서 부동소수점을 사용한다.)


3. 부동 소수점 표현법

  ⓐ 정소와 소수를 합친수인 가수와 가수 안에서 어디에 소수점이 위치할지를 나타내는 지수, 그리고 부호비트 이렇게 세부분으로 나뉜다.

  ⓑ 표준은 IEEE-754 이고 가장 높은 비트를 부호비트로 사용하고 그 다음 8비트는 지수로, 나머지 23비트를 가수로 사용할 것을 명시한다.

  * v = s * 2^(e-127) * (1+m); 


3. 절댓값과 정확도 간의 균형

  ⓐ 부동소수의 정확도는 절댓값이 작을수록 높아진다. ( 한정도니 비트로 표현된 가수를 정수부와 소수부가 나눠써야하기 때문에.) - 유효자릿수


  ⓑ 머신 엡실론은 2^(-23) 이고 대력 1.192* 10^(-7) 이다. 이보다 작은 값은 표현할 수 없다.


4. 기본적인 데이터 타입

  ⓐ char 보통 8비트 ASCII나 UTF-8 부호를 전부 담을 수 있을 정도의 크기

  ⓑ int, short, long - int 는 대상 플랫폼에서 제일 효율적으로 처리할 수 있는 크기의 부호있는 정수 타입이다.

(short는 int보다 작은 수를 담고 보통 16비트를 쓴다. long은 int와 같더나 크고 32나 64비트를 쓴다.)

  ⓓ float 오늘날 대부분 컴파일러에서 32비트 IEEE-754 부동소수를 사용한다.

  ⓔ double 2배 정밀도(64비트) IEEE-754 부동소수

  ⓕ bool 1비트로는 구현하지 않으며 8비트나 32비트 전부쓰는 컴파일러도 있다.


5. 컴파일러에 따라 크기가 다른 타입

 __int8, __int16, __int32, __int64 와 같은 타입이 있다.


6. SIMD (Single Instruction Multiple Data)

 여러개의 데이터를 병렬적으로 동시에 연산하는 기능 (콘솔에서 많이 사용)




'게임 엔진 아키텍처 > 3장 엔지니어링 기초' 카테고리의 다른 글

객체 메모리  (0) 2016.05.24
C/C++ 메모리 구조  (1) 2016.05.24
선언, 정의, 연결성  (0) 2016.05.24
멀티바이트 데이터와 엔디언  (1) 2016.05.24
C++ 개념과 사용법  (0) 2016.05.23
posted by 알쿠미