의외로 int의 크기에 대해서 궁금해하는 분들이 많으신 것 같아서, 간단히 포스팅 해봅니다.
int라 함은 본래 CPU에서 가장 기본적으로 사용하는 데이터 단위의 크기인 WORD와 동일한 크기를 의미합니다. 그리고 WORD의 크기는 16비트 컴퓨터에서는 2 bytes, 32비트 컴퓨터에서는 4 bytes, 64비트 컴퓨터에서는 8 bytes입니다. 그리고 주소를 가리키는 포인터의 크기도 그러합니다.
"윈도우 32 bit 버전에서는 RAM을 4G Byte 이내로만 인식가능하고, 그 이상을 인식하려면 64 bit 버전을 깔아야 한다"라는 이야기를 들어보셨을 겁니다. 바로 주소의 최대크기 차이 때문에 그렇습니다.
그런데, C 컴파일러에서 코딩시 사용하는 int는 호환성을 위해서 4 bytes 크기로 명시되어 있습니다. 그렇기 때문에 int는 4 bytes라고 생각하시면 맞습니다. 그러나 기억하셨으면 하는 것은 원래 int가 4 bytes인 것이 아니라, 그냥 int를 4 bytes 짜리로 간주하고 쓰는 것이라는 점입니다.
사실, 물리적인 메모리 상에서는 int 형이란 것이 따로 존재하지 않습니다. 컴파일러 상에서 int 를 그렇게 정의해서 쓰는 것일 뿐이죠. 그래서 컴파일러마다 다를 수 있습니다.
예를 들면, 윈도우 32bit 버전의 C 컴파일러에서는 long을 int와 같은 크기로 사용하지만, 리눅스 64bit 버전에서는 long 형을 8 bytes로 사용하는 등의 경우가 있는 등의 차이가 그런 것입니다.
int라 함은 본래 CPU에서 가장 기본적으로 사용하는 데이터 단위의 크기인 WORD와 동일한 크기를 의미합니다. 그리고 WORD의 크기는 16비트 컴퓨터에서는 2 bytes, 32비트 컴퓨터에서는 4 bytes, 64비트 컴퓨터에서는 8 bytes입니다. 그리고 주소를 가리키는 포인터의 크기도 그러합니다.
"윈도우 32 bit 버전에서는 RAM을 4G Byte 이내로만 인식가능하고, 그 이상을 인식하려면 64 bit 버전을 깔아야 한다"라는 이야기를 들어보셨을 겁니다. 바로 주소의 최대크기 차이 때문에 그렇습니다.
그런데, C 컴파일러에서 코딩시 사용하는 int는 호환성을 위해서 4 bytes 크기로 명시되어 있습니다. 그렇기 때문에 int는 4 bytes라고 생각하시면 맞습니다. 그러나 기억하셨으면 하는 것은 원래 int가 4 bytes인 것이 아니라, 그냥 int를 4 bytes 짜리로 간주하고 쓰는 것이라는 점입니다.
사실, 물리적인 메모리 상에서는 int 형이란 것이 따로 존재하지 않습니다. 컴파일러 상에서 int 를 그렇게 정의해서 쓰는 것일 뿐이죠. 그래서 컴파일러마다 다를 수 있습니다.
예를 들면, 윈도우 32bit 버전의 C 컴파일러에서는 long을 int와 같은 크기로 사용하지만, 리눅스 64bit 버전에서는 long 형을 8 bytes로 사용하는 등의 경우가 있는 등의 차이가 그런 것입니다.
'develop' 카테고리의 다른 글
국가 약어 코드 (ISO 639 Language Codes) (0) | 2011.02.07 |
---|---|
Eclipse에서 Android 개발시 Proxy 설정하기 (0) | 2010.10.15 |
enum과 typedef enum (12) | 2010.08.24 |
memcpy() (0) | 2010.08.23 |
삼성 오픈소스 사이트 소개 (0) | 2010.08.19 |
댓글