CodeSarang.Com
Home | 전체 메뉴 | 질문/답변 Join | Login | 검색   

 

64 비트 정수 __int64 와 ULARGE_INTEGER 의 연산

등록자 : cpueblo (유광희), 2008-10-16

Intro

안녕하세요. cpueblo 입니다 ^^
ULARGE_INTEGER 는 64 비트 정수를 쉽게 지원하기 위해 만들어진 union 구조체 입니다
union 구조체 답게 QuadPart 에 값을 넣거나
LowPart 나 HighPart 에 값을 넣게 되면 QuadPart 에 넣는 효과가 생깁니다
ULARGE_INTEGER 에 있는 QuadPart 는 ULONGLONG 타입이며 이 타입은 unsigned __int64 와 동일한 타입니다

typedef union _ULARGE_INTEGER { struct { DWORD LowPart; DWORD HighPart; }; struct { DWORD LowPart; DWORD HighPart; } u; ULONGLONG QuadPart; } ULARGE_INTEGER;

Source

// MyInt 선언 ULARGE_INTEGER MyInt; // MyInt 의 QuadPart 에 최대 입력 가능한 숫자 넣기 MyInt.QuadPart = 12345678901234567890; TRACE("MyInt.QuadPart = %I64u (Unsigned)\n", MyInt.QuadPart); TRACE("MyInt.LowPart = %u\n", MyInt.LowPart); TRACE("MyInt.HighPart = %u\n", MyInt.HighPart); unsigned __int64 MyUI64; signed __int64 MySI64; // Signed 와 Unsinged 값에 넣어보기 MyUI64 = MyInt.QuadPart; MySI64 = MyInt.QuadPart; TRACE("MyUI64 = %I64u (Unsigned)\n", MyUI64); TRACE("MySI64 = %I64d (Signed)\n", MySI64); // LowPart 와 HighPart 에 넣어 보기 MyInt.LowPart = 0; MyInt.HighPart = 1; TRACE("MyInt.QuadPart = %I64u (Unsigned)\n", MyInt.QuadPart);

Result

MyInt.QuadPart = 12345678901234567890 (Unsigned) MyInt.LowPart = 3944680146 MyInt.HighPart = 2874452364 MyUI64 = 12345678901234567890 (Unsigned) MySI64 = -6101065172474983726 (Signed) MyInt.QuadPart = 4294967296 (Unsigned)

Keywords

int64 printf
__int64
64비트 출력하기
ularge_integer 연산



댓글 달기 (로그인이 필요합니다)
제목
내용

http://codesarang.com. mail to cpueblocpueblo.com