본문 바로가기

업무 채널

BYTE, WORD, DWORD, int, long

byte 는 unsigned char 0 ~ 255 까지의 정수 0x00 ~ 0xFF (1 바이트) 

byte 두개 모여서 WORD

WORD 2byte ( 16bit )
DWORD Win32 기반에서는 4byte( 32bit)


typedef unsigned short WORD;
typedef unsigned long DWORD;
 
Visual Studio에서는 이 외에도 DWORD32 / DWORD64 형을 지원합니다.
 
typedef unsigned int DWORD32, *PDWORD32;
typedef unsigned __int64 DWORD64, *PDWORD64;
 
// WORD, DWORD 설명
http://oursite.tistory.com/173


// 32비트에서 64비트로 환경이 바뀔경우 주의해야할 사항
http://wiki.kldp.org/wiki.php/32bitCodeTo64bit

 

 

================================================================

추가 2013.11.11

 

위 참조주소의 32비트에서 64비트로 환경이 바뀔경우 주의해야할 사항을 보면

32 -> 64 비트 변경시

 

int 형은 32bit(4byte) 를 유지하며,

long 형은 32bit(4byte)에서 64bit(8byte)로 확장된다고 적혀있다.

 

그러나 아래 글을 보면 위와 반대로

long 은 항상 32bit(4byte)를 유지하며,

int는 운영체제의 비트수를 따라간다고 한다.

 

개인적으로 아래의 참고 글이 더 신빙성이 있어보인다.

 

C 언어의 타입 정의에 int 형은 "CPU의 레지스터와 동일한 크기를 가지는 타입"으로 정의되어 있다. 레지스터란 CPU내의 임시 기억 장소이며 레지스터의 크기에 따라 CPU의 비트 수를 정의한다. 즉, 레지스터가 16비트이면 16비트 컴퓨터, 32비트이면 32비트 컴퓨터라고 부른다. 비트 수가 높으면 높을수록 CPU가 한 번에 처리할 수 있는 자료양이 많아지므로 더 성능이 높다고 할 수 있다.

, int형은 CPU가 가장 효율적으로 다룰 수 있는 정수형으로 정의되어 있으며 그래서 int형의 실제 크기는 플랫폼에 따라 달라진다. 다음에 알아볼 포인터형도 마찬가지이다. 과거 8086이나 80286같은 16비트 CPU 시절, 윈도우즈 3.1같은 16비트 운영체제에서 int는 16비트였었다. 그러나 386이후의 CPU와 윈도우즈 95이후의 32비트 운영체제에서 int는 32비트이다. 64비트 CPU가 나오면(이미 나와 있다) 그때는 int형이 64비트(8바이트)가 될 것이다.

반면 long형은 그 크기가 4바이트로 고정되어 있어 어떤 플랫폼에서나 4바이트이다. int와 long이 동일한 크기를 가지는 것은 32비트 플랫폼에서 뿐이며 16비트에서는 서로 다른 타입이고 64비트에서도 달라질 것이다. 꼭 4바이트를 쓰고 싶으면 long형으로 선언하고 플랫폼의 환경에 따라 적절한 크기를 자동으로 선택하고 싶다면 int형으로 선언하면 된다.

 

참조 사이트 : http://www.soen.kr/

소프트웨어 공학 연구소 C/C++ 강좌

3-3-나. 정수형의 길이 中 발췌

 

정확히 알고 계신분 댓글 부탁합니다.

  • anonymous 2019.02.16 05:30

    long은 Windows 플랫폼에서 고정 4Byte이며, 비-윈도우 플랫폼에서는 32Bit 환경 4Byte, 64Bit 환경 8Byte입니다.

    출처 : 크로스플랫폼 핵심 모듈 설계의 기술 - 전상현 / 로드북