포스팅을 읽기 전에 참고하면 좋은 자료.
https://docs.microsoft.com/ko-kr/windows/win32/learnwin32/windows-coding-conventions
[Graph of Decimal - Hexadecimal - Binary]
d | hex | bin | d | hex | bin | d | hex | bin |
0 | 0x00 | 0000 0000 | 64 | 0x40 | 0100 0000 | 128 | 0x80 | 1000 0000 |
1 | 0x01 | 0000 0001 | 65 | 0x41 | 0100 0001 | 129 | 0x81 | 1000 0001 |
2 | 0x02 | 0000 0010 | 66 | 0x42 | 0100 0010 | 130 | 0x82 | 1000 0010 |
3 | 0x03 | 0000 0011 | 67 | 0x43 | 0100 0011 | 131 | 0x83 | 1000 0011 |
4 | 0x04 | 0000 0100 | 68 | 0x44 | 0100 0100 | 132 | 0x84 | 1000 0100 |
5 | 0x05 | 0000 0101 | 69 | 0x45 | 0100 0101 | 133 | 0x85 | 1000 0101 |
6 | 0x06 | 0000 0110 | 70 | 0x46 | 0100 0110 | 134 | 0x86 | 1000 0110 |
7 | 0x07 | 0000 0111 | 71 | 0x47 | 0100 0111 | 135 | 0x87 | 1000 0111 |
8 | 0x08 | 0000 1000 | 72 | 0x48 | 0100 1000 | 136 | 0x88 | 1000 1000 |
9 | 0x09 | 0000 1001 | 73 | 0x49 | 0100 1001 | 137 | 0x89 | 1000 1001 |
10 | 0x0A | 0000 1010 | 74 | 0x4A | 0100 1010 | 138 | 0x8A | 1000 1010 |
11 | 0x0B | 0000 1011 | 75 | 0x4B | 0100 1011 | 139 | 0x8B | 1000 1011 |
12 | 0x0C | 0000 1100 | 76 | 0x4C | 0100 1100 | 140 | 0x8C | 1000 1100 |
137 = 0x89 = 1000 1001이고, 1000 = 8, 1001 = 9이다. (분리해서 생각하면 편하다.)
즉, 16진수는 숫자 하나가 4bits를 차지하고, 16진수 두 자리가 1byte가 된다.
70000 = 0x11170 = 0000 0000 0000 0001 0001 0001 0111 0000 b 이다.
이를 좀 더 편하게 보려면, 16진수의 각 자릿수를 2진수로 바꿔서 이어붙여보면 된다.
16진수는 0-15, 즉 16가지의 조합이 가능한 자릿수들을 갖고,
16가지의 조합을 위해서는 2^4 = 16이므로, 4bits가 필요하다.
그래서 16진수의 각 자릿수는 4bits로 분해 및 치환해서 살펴보면 가시적으로 좋은 것이다.
0x11170
=> 1 1 1 7 0
=> 0001 0001 0001 0110 0000
이러한 형태가 된다.
[WORD 체계]
1BYTE = 8bits = (2^8) = (255가지 표현 가능)
1WORD = 2BYTE = 16bits = (2^16) = (65,535가지 표현 가능)
1DWORD = 2WORD = 4BYTE = 32bits = (2^32) = (4,294,967,296가지 표현 가능) = (약 43억)
1QWORD = 2DWORD = 4WORD = 8BYTE = 64bits = (2^64) = (1.844674407370955e+19가지 표현 가능)
(1.844674407370955e+19 = 9.223372036854776e+18 * 2이다.)
(9.223372036854776e+18는, 9,223,372,036,854,775,808, 즉, 약 922경이다.)
[Power of Two]
2의 제곱수들을 16진수로 표현한 것은 다소 낯설 수 있다.
16진수의 앞자리가 1, 2, 4, 8로 규칙적으로 변하는 것을 미리 봐두어서 기억해놓자.
제곱꼴 | 값 | 2진수 | 16진수 | IEC |
2^0 | 1 | 0000 0000 0000 0000 0000 0000 0000 0001 | 1 | 1 |
2^1 | 2 | 0000 0000 0000 0000 0000 0000 0000 0010 | 2 | 10 |
2^2 | 4 | 0000 0000 0000 0000 0000 0000 0000 0100 | 4 | 100 |
2^3 | 8 | 0000 0000 0000 0000 0000 0000 0000 1000 | 8 | 1Ki |
2^4 | 16 | 0000 0000 0000 0000 0000 0000 0001 0000 | 10 | 10Ki |
2^5 | 32 | 0000 0000 0000 0000 0000 0000 0010 0000 | 20 | 100Ki |
2^6 | 64 | 0000 0000 0000 0000 0000 0000 0100 0000 | 40 | 1Mi |
2^7 | 128 | 0000 0000 0000 0000 0000 0000 1000 0000 | 80 | 10Mi |
2^8 | 256 | 0000 0000 0000 0000 0000 0001 0000 0000 | 100 | 100Mi |
2^9 | 512 | 0000 0000 0000 0000 0000 0010 0000 0000 | 200 | 1Gi |
2^10 | 1024 | 0000 0000 0000 0000 0000 0100 0000 0000 | 400 | 10Gi |
2^11 | 2048 | 0000 0000 0000 0000 0000 1000 0000 0000 | 800 | 100Gi |
2^12 | 4096 | 0000 0000 0000 0000 0001 0000 0000 0000 | 1000 | 1Ti |
2^13 | 8192 | 0000 0000 0000 0000 0010 0000 0000 0000 | 2000 | 10Ti |
2^14 | 16384 | 0000 0000 0000 0000 0100 0000 0000 0000 | 4000 | 100Ti |
2^15 | 32768 | 0000 0000 0000 0000 1000 0000 0000 0000 | 8000 | 1Pi |
2^16 | 65536 | 0000 0000 0000 0001 0000 0000 0000 0000 | 10000 | 10Pi |
https://zetawiki.com/wiki/2%EC%9D%98_%EA%B1%B0%EB%93%AD%EC%A0%9C%EA%B3%B1
[Size of Data Type]
구분 | 자료형 | 크기 | 범위 |
기본형 | void | – | – |
문자형 | (signed) char | 1 byte | -128 ~ 127 |
unsigned char | 1 byte | 0 ~ 255 | |
wchar_t | 2 byte | 0 ~ 65,535 | |
정수형 | bool | 1 byte | 0 ~ 1 |
(signed) short (int) | 2 byte | -32,768 ~ 32,767 | |
unsigned short (int) | 4 byte | 0 ~ 65,535 | |
(signed) int | 4 byte | -2,147,483,648 ~ 2,147,483,647 | |
unsigned int | 4 byte | 0 ~ 4,294,967,295 | |
(signed) long (int) | 4 byte | -2,147,483,648 ~ 2,147,483,647 | |
unsigned long (int) | 4 byte | 0 ~ 4,294,967,295 | |
__int8 | 1 byte | -128 ~ 127 | |
__int16 | 2 byte | -32,768 ~ 32,767 | |
__int32 | 4 byte | -2,147,483,648 ~ 2,147,483,647 | |
__int64 | 8 byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
|
실수형 | float | 4 byte | 3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits) |
(long) double | 8 byte | 1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits) |
https://myblog.opendocs.co.kr/archives/1230
https://dojang.io/mod/page/view.php?id=174
'(2022) 공부 (Study) > 게임 개발 (Development)' 카테고리의 다른 글
[Win32API] Bitmap에 대한 정리 (1) - Bitmap 구조 및 역할 (0) | 2022.04.16 |
---|---|
[Win32API] File 입출력 (0) | 2022.04.16 |
[Win32API] GetAsyncKeyState() 와 키 입력 받기 (2) (0) | 2022.04.14 |
[Win32API] Rendering과 Double Buffering (0) | 2022.04.13 |
[Win32API] GetAsyncKeyState() 와 키 입력 받기 (1) (0) | 2022.04.13 |