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 cpueblo cpueblo.com
|