윈도우에서 1초를 어떻게 표현하는지 설명해 보겠습니다.

먼저 시간의 단위부터 알아야 하겠죠? 다들 잘 아시겠지만 시간 단위에 대해 애매한 분들을 위해 단위 부터 먼저 설명하겠습니다.

  • 밀리 초(millisecond) : 천 분의 1초입니다. 10^-3, 1/1000
  • 마이크로 초(microsecond) : 백만 분의 1초입니다. 10^-6, 1/1000000
  • 나노 초(nanosecond): 십억 분의 1초입니다. 10^-9, 1/1000000000

나노 초 이하의 단위는 잘 쓰이지 않기 때문에 생략했습니다.

그러면 윈도우에서는 시간을 64비트 크기의 변수에 저장하며 최소 단위는 100 나노 초입니다. 즉 1씩 증가하면 100나노 초씩 증가하는 것이죠.

그래서 1초를 표현해보면 아래와 같습니다.

0000 0000 0000 1000 0000 (1초, 10 진수 만 단위)

1초가 되려면 10억 나노 초가 되야 하는데 천만을 쓴 것은 최소 단위가 100 나노 초이기 때문에 100을 나누어 주어서 입니다.

이것을 16진수로 표현하면 0x00000000 00989680이 됩니다. 이건 절대시간이므로 1601년 1월 1일 00시 00분 1초가 됩니다.

상대 시간은 음수로 표현하는데, 0x00000000 00989680을 음수로 바꾸어 보겠습니다. 일단 2진수로 바꾸면

00000000000000000000000000000000 00000000100110001001011010000000
0x00000000 00989680

11111111111111111111111111111111 11111111011001110110100101111111
1의 보수 (비트 반전)

11111111111111111111111111111111 11111111011001110110100110000000
2의 보수 (+1)

이렇게 하여 최종 값인 1111111111111111111111111111111111111111011001110110100110000000이 나왔습니다. 맨 앞에 비트가 1이므로 음수입니다.

그래서 상대시간 1초는 0xFFFFFFFF FF676980로 표현할 수 있습니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

24 March 2007