64비트 integer사용법

nonreasoningguy의 이미지

Win32용 프로그램을 Linux용으로 포팅하고 있습니다.
VC++의 _int64와 같은 64비트 int형을 리눅스상의 gcc에서 사용하고
싶은데 longlong형을 쓴다는 예기는 들은 것 같은데 어떻게 사용하는 지
모르겠습니다. longlong형을 쓰면 bit연산도 쉽게 가능한가요?

참고로 저는 Redhat 72에 gcc 2.96을 쓰는데 longlong형이 정의가
안되었다고 에러가 납니다.

추가로 라이브러리를 설치해야 하는 것인가요?

익명 사용자의 이미지

ahnts71 wrote:
Win32용 프로그램을 Linux용으로 포팅하고 있습니다.
VC++의 _int64와 같은 64비트 int형을 리눅스상의 gcc에서 사용하고
싶은데 longlong형을 쓴다는 예기는 들은 것 같은데 어떻게 사용하는 지
모르겠습니다. longlong형을 쓰면 bit연산도 쉽게 가능한가요?

참고로 저는 Redhat 72에 gcc 2.96을 쓰는데 longlong형이 정의가
안되었다고 에러가 납니다.

추가로 라이브러리를 설치해야 하는 것인가요?


에러가 나는 이유는 long과 long 사이에 빈칸이 빠졌기 때문입니다. 그리고 long long 타입도 정수이므로 비트 연산이 가능합니다.
larycho의 이미지

u_int64_t 라는 것이 있습니다.
잘은 모르지만...
ㅎㅎ

익명 사용자의 이미지

larycho wrote:
u_int64_t 라는 것이 있습니다.
잘은 모르지만...
ㅎㅎ

sys/types.h나 비슷한 파일에 보면(운영체제마다 약간씩 다릅니다) 다음과 같이 정의되어 있습니다:

typedef long long int64_t;
typedef unsigned long long u_int64_t;
larycho의 이미지

운영체제 마다 다르기 때문에 int64_t를 사용하죠..
그러면 나머지는 컴파일러가 하던지 라이브러리가 하던지.. 아니면 다른 어떤것이 하면 되니까요..

그리고 u_int64_t는 저의 실수 이군요..
죄송.

cinsk의 이미지

흠.. 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)

여기에 관련된 함수로는 다음과 같은 것들이 있습니다:

#include <math.h>

long int lrint(double x); 
long int lrintf(float x); 
long int lrintl(long double x); 
long long int llrint(double x); 
long long int llrintf(float x); 
long long int llrintl(long double x);

자세한 것은 표준 문서를 참고하세요.

kodol의 이미지

64bit 변수와 32bit 변수를 같이 사용해야 하는 환경에서 애로점이 많았었는데..

모든 int type은 int64_t, int32_t, int16_t, int8_t 처럼
platform에 관계없이 bit단위로 정의된 type으로 쓸 수 있습니다

같은 type끼리는 bit 연산이 바로 되지만
다른 type끼리 bit연산하실때는 주의하셔야 해요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.