코드 검증을 하다가 WORD, DWORD와 같은 자료형을 보게 되었다.
int, double, float, unsigned int 등의 자료형식이 익숙한 나에겐 왜 WORD, DWORD 같은 자료형을 쓰는지 이해하기 어려웠다.
그래서 찾아본 콤퓨타 과학(Computer Science)
WORD, DWORD가 정의된 헤더를 찾아가 보면,
WORD는 unsigned short,
DWORD는 unsigned long로 typedef 되어 있다.
(Visual studio와 같은 IDE에서 선언 후 F12로 확인 가능)
굳이 재정의하여 사용하는 이유는?!

거슬러 운영체제가 개발되던 시절로..

운영체제는 컴퓨터의 성능을 최대한 활용할 수 있게 개발되어 왔는데, 때문에 하드웨어를 제어하는 코드들은 하드웨어에 종속적으로 코드를 짤 수 밖에 없었다.
CPU에 데이터를 보낼 때 전송 속도, 전송 통로의 크기등이 고려되어야 했다.
https://link.coupang.com/a/bANN6A
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
특히 전송 통로의 크기는 데이터를 얼마나 전송할지가 달려있기에 중요한 부분이었다.
통로의 크기보다 큰 데이터는 나누어 보내야 했기 때문이다.
그래서 통로의 크기에 단위를 붙이게 되었다.
개발자들은 데이터 전송 통로에서 한번에 지나갈 수 있는 데이터 크기를 CPU 기본 처리 단위인 16bit(unsigned short) WORD라는 타입으로 재정의 하였다.
기본 처리 단위 : CPU -> 레지스터로 데이터를 옮겨 놓을 수 있는 데이터 단위
Ex)
16bit 프로세서 : 16bit가 기본 처리 단위
32bit 프로세서 : 32bit가 기본 처리 단위
그러다 프로세서의 발전으로 32bit, 64bit가 생겨나면서 새로운 단위를 만들었는데
이것이 DWORD(Double WORD)
WORD의 두배로 32bit를 의미한다.
현재의 컴퓨터는 64bit도 나오기 때문에
QWORD(Quad WORD)도 탄생하였다.

운영체제 확인 방법
현재 본인이 사용하고 있는 운영체제가 궁금하다면
제어판 - 시스템 및 보안 - 시스템 에서 확인이 가능하다.
나 같은 경우 64bit로 나온다.
byte
(unsigned char)
- 1byte(8bit)
- 0000 0001
word
(unsigned short)
- 2byte(16bit)
- 0000 0000 0000 0001
dword
(unsigned long)
- 4byte(32bit)
- 0000 0000 0000 0000 0000 0000 0000 0001
qword
- 8byte(64bit)
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001