word short int long?
글쓴이: 송지석 / 작성시간: 월, 2005/08/01 - 3:11오후
기본형으로 많이 쓰는 word와 short, int, long 에 대해 정확한 정의를 부탁드립니다.
word는 저의 경우 예전에는 CPU마다 달라지는 단위로 알았었는데(16비트 CPU면 2byte 32비트면 4byte) 2byte로 고정된 형태라고 하고
short는 16bit 맞는 것 같고
int와 long이 혼동되는데
저는 int가 CPU 기본 자료형이고, long이 4byte인 걸로 생각했는데
저번에 tru64(alpha) 시스템에서 확인해보니
int는 4byte고 long은 8byte더군요. (그럼 이 시스템에선 long long은 얼마지??)
int가 아니라 long이 CPU에 따라 크기가 변하는 자료형인가요?
그러나 16bit시스템에선 int가 16bit이잖아요? 그럼 그 시스템에선 long도 16bit인가요?
정확한 정의를 아시는 분 답변 부탁드립니다.
Forums:
Re: word short int long?
C에서 쓰는 short, int, long을 말씀하신 거라면...
이들은 각각 *최소한* 다음과 같은 범위의 정수를 표현할 수 있어야 합니다.
short : -(2^15 - 1) ~ (2^15 - 1)
int : -(2^15 - 1) ~ (2^15 - 1)
long : -(2^31 - 1) ~ (2^31 - 1)
long long : -(2^63 - 1) ~ (2^63 - 1)
1바이트 == 8비트인 환경에서는 최소한 2, 2, 4, 8바이트가 되지요. 따라서
long 뿐만 아니라 모든 정수형의 크기는 달라질 수 있습니다.
아니오. 이 역시 표준에 따르면 최소한 32비트는 되어야 합니다. 참고로 예전의
8088/MS-DOS 환경의 터보 C에서는 long의 범위가 -2^31 ~ (2^31 - 1) 였던
것으로 기억합니다.
8088/MS-DOS에서 turbo-c의 경우 int 16비트 l
8088/MS-DOS에서 turbo-c의 경우
int 16비트
long 32비트
였습니다.
80386/MS-DOS
-WatcomC의 경우 int는 32비트였습니다(이는 운영체제를 갈아업고 그위에 DOS extender(DOS4GW를 기본으로, TNT...등 다양한 것이 있었지만)를 기본 운영체제로 간주했기때문입니다.
-Turbo-C는 여전히 16비트였습니다.
대체로 송지석님의 의견이 정설이며,
Tru64는 스탠다드 유닉스는 아닙니다. 알파에 최적화시킨 유닉스 클론으로 봐야겠지요.
특히, 시스템의 워드는 하드웨어 기준으로 볼때 CPU의 동시처리 바이트수로 규정하는게 옳습니다.
또한 유닉스처럼 가상적인 시스템으로 부터 출발하는 경우 32비트를 1워드로 취하는것이 맞습니다.(따라서, 16비트AT를 기본으로 하던 Xenix는 Unix가 될 수 없었던 것입니다.)
보통은 운영체제가 바라보는 시스템의 bit수를 1word로 간주하고, 이를 int로 삼습니다.
그외는 1WORD를 기준으로 적절히,...
댓글 달기