64비트 integer사용법
글쓴이: nonreasoningguy / 작성시간: 금, 2003/01/31 - 11:56오후
Win32용 프로그램을 Linux용으로 포팅하고 있습니다.
VC++의 _int64와 같은 64비트 int형을 리눅스상의 gcc에서 사용하고
싶은데 longlong형을 쓴다는 예기는 들은 것 같은데 어떻게 사용하는 지
모르겠습니다. longlong형을 쓰면 bit연산도 쉽게 가능한가요?
참고로 저는 Redhat 72에 gcc 2.96을 쓰는데 longlong형이 정의가
안되었다고 에러가 납니다.
추가로 라이브러리를 설치해야 하는 것인가요?
Forums:
Re: 64비트 integer사용법
에러가 나는 이유는 long과 long 사이에 빈칸이 빠졌기 때문입니다. 그리고 long long 타입도 정수이므로 비트 연산이 가능합니다.
u_int64_t 라는 것이 있습니다.
u_int64_t 라는 것이 있습니다.
잘은 모르지만...
ㅎㅎ
Re: u_int64_t 라는 것이 있습니다.
sys/types.h나 비슷한 파일에 보면(운영체제마다 약간씩 다릅니다) 다음과 같이 정의되어 있습니다:
그래서 int61_t를 사용하죠..
운영체제 마다 다르기 때문에 int64_t를 사용하죠..
그러면 나머지는 컴파일러가 하던지 라이브러리가 하던지.. 아니면 다른 어떤것이 하면 되니까요..
그리고 u_int64_t는 저의 실수 이군요..
죄송.
64 bit integer
흠.. C 언어가 정수 타입에 대해서 크기를 지정하지 않는다는 것은 아시죠?
long int보다 큰 타입은 C 언어 표준 (ISO C)에 따르면
long long int입니다.
대개 64bit로 쓰이지요.
물론 unsigned long long int도 존재하며,
상수를 쓸 때에는 ll, LL을 붙입니다.
345LL <- 이렇게요.
<limits.h>에는 다음과 같은 매크로가 추가됩니다.
LLONG_MIN (-2^63 - 1)
LLONG_MAX (2^63 - 1)
ULLONG_MAX (2^64 - 1)
여기에 관련된 함수로는 다음과 같은 것들이 있습니다:
자세한 것은 표준 문서를 참고하세요.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
int64_t
64bit 변수와 32bit 변수를 같이 사용해야 하는 환경에서 애로점이 많았었는데..
모든 int type은 int64_t, int32_t, int16_t, int8_t 처럼
platform에 관계없이 bit단위로 정의된 type으로 쓸 수 있습니다
같은 type끼리는 bit 연산이 바로 되지만
다른 type끼리 bit연산하실때는 주의하셔야 해요
댓글 달기