스터디 그룹

스터디 한 것

게임엔진 아키텍처 3판 3장 - “게임을 위한 소프트웨어 엔지니어링 기초” 중

데이터, 코드, 메모리 레이아웃

수 표현

수의 기초

10진법 : 0에서 9까지 10개의 수를 사용.

\[7803 = (7 \times 10^3) + (8 \times 10^2) + (0 \times 10^1) + (3 \times 10^0)\]

2진법 : 0과 1, 2개의 수를 사용. 표현은 0b 를 앞에 붙여서.

\[1101 = (1 \times 2^3) + (1 \times 2^2) + (0 \times 2^1) + (1 \times 2^0) = 8 + 4 + 0 + 1 = 13\]

16진법 : 0에서 F 까지 16개의 수를 사용. 컴퓨터 분야에서는 자주 사용. 표현은 0x 를 앞에 붙여서

\[0XFF = 0b11111111 = 255\]

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

오늘날의 컴퓨터, 게임 콘솔은 32bit 또는 64bit 로 표현되는 정수를 다루는데 가장 능숙.

부호 없는 32bit 정수는 그냥 2진수로 표현하기만 하면 되며 수의 범위는 0x00000000 ~ 0xffffffff.

부호 있는 32bit 정수는 제일 높은 비트를 부호 비트로 사용하며 0 이면 양수, 1 이면 음수. 수를 표현하는 범위가 31bit 밖에 안되어서 32bit 에 비해 절반 밖에 안됨.

대부분의 마이크로 프로세서에서는 조금 효율적인 방식으로 음의 정수를 표현. 이를 ‘2의 보수’ 라 함.

32비트 2의 보수 표현에서는 0xffffffff 이 -1 을 나타내며 음수는 여기서 하나씩 감소. 따라서 0x00000000 부터 0x7fffffff 까지 양의 정수, 0x80000000 부터 0xffffffff 까지가 음수.

고정소수점 표현법

컴퓨터 공삭에서는 일찍이 고정 소수점 이라는 방법을 사용. 정수부 표현할 비트수와 소수부 표현할 비트수를 임의로 고정.

왼쪽에서 오른쪽으로 갈수록 정수부는 감소하는 2의 제곱을 나타내고, 소수부는 감소하는 2의 제곱의 역수를 나타냄.

-173.25 를 1비트는 부호 비트, 16비트는 정수, 나머지 15비트는 소수를 표현 한다면

음수 = 0b1
173 = 0bOOOOOOOO1O1O11O1
0.25 = 1/4 = 0b010000000000000

32bit 로 합치면 0x8056a000

단점은 표현할 정수부의 범위와 소수부의 정확도를 둘 다 제한한다는 점. 이를 해결하고자 부동소수점 표현법을 사용.