![]() |
|
||||||||
경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지 |
|
Lyn [tohnokanna]
2010-04-07 12:52 X
컴파일러 마음대로.
Int64라는 64비트 전용타입이 있습니다.
32비트의 호환을 위해서 Integer는 4바이트입니다. 참고로, 유닉스의 경우는 integer가 기본 32비트로 설정되어 있는 것과 64비트로 설정되어 있는 나누어져 있습니다. 아마, 64비트 운영체제가 완전히 보급되기 전에는 이런 과도기적 혼란은 계속 될 것으로 봅니다. -------------------------------------------------------------------------------------- Type Storage size Range Byte 1 0 to 255 ShortInt 1 -127 to 127 Word 2 0 to 65,535 SmallInt 2 -32,768 to 32,767 LongWord 4 0 to 4,294,967,295 Cardinal 4* 0 to 4,294,967,295 LongInt 4 -2,147,483,648 to 2,147,483,647 Integer 4* -2,147,483,648 to 2,147,483,647 Int64 8 -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 Single 4 7 significant digits, exponent -38 to +38 Currency 8 50+ significant digits, fixed 4 decimal places Double 8 15 significant digits, exponent -308 to +308 Extended 10 19 significant digits, exponent -4932 to +4932 -------------------------------------------------------------------------------------- 전 다른 이야기로,
크기가 문제되는 넘들은 Integer대신 DWord를 사용합니다. Cardinal의 경우에도 나중에 컴파일러가 변했을 때, 그 크기를 확신할 수 없습니다. 사실 린군 말대로, 정수형이든 어떤 변수든 컴파일러 설계자 맘이긴 하죠. 지금이라도 128비트 정수형이 필요하면 문제없이 만들 수 있으니.. 물론 앞으로 64비트 델파이가 나오면 정수형 기본은 64비트일 확률이 높겠죠. 아니면, int64가 있으니 내비둘 확률도 ㅡ.ㅡ; 루비같은 경우에는 그 한계가 없다고 본거 같기도 하고. 제 기억이 맞다면, 8비트 PC 시절에도 integer 형은 16비트였던 것으로 기억합니다. (물론 레지스터 크기의 영향이겠지만 AX, BX, CX, DX ..) http://www.unix.org/whitepapers/64bit.html
윈도우용(적어도 현재까진)은 위의 표에서 LLP64 모델을 따르고 있고 유닉스(아마도 리눅스도)는 LP64 모델을 따릅니다. 근데 리눅스에서 만들어져 윈도우로 포팅된놈들(MinGW GCC 등) 은 LP64로 유지되는 것 같구요. LP64(Long integer와 Pointer 는 64 비트라는 뜻)와 LLP64(Long long integer 와 Pointer가 64 비트라는 뜻) 를 보시면 됩니다.
LP64는 리눅스 진영에서 가장 많이 사용되는 것이고요, LLP64는 MS 윈도우 진영에서 밀고 있는 것입니다. 따라서 어떤 64 bit OS에서도 int는 32 bit 입니다. 64 비트 리눅스에서는 long int 는 64 bit 이지만, 64 비트 MS 윈도우에서는 여전히 32 bit 입니다. 64 bit OS에서도 float/double 는 32bit OS 에서와 마찬가지로 4 byte/8 byte의 사이즈를 갖습니다. 관련 글 리스트
|
Copyright © 1999-2015, borlandforum.com. All right reserved. |