2038년 문제: 두 판 사이의 차이

K-위키
새 문서: {{예언}} 32비트로 표현된 유닉스 시간이 1970년 1월 1일 00:00 (UTC)에서 2,147,483,647(2<sup>31</sup> - 1)초 지난 후인 2038년 1월 19일 03:14:08 (UTC)...
 
편집 요약 없음
3번째 줄: 3번째 줄:


32비트 시스템에서 시간 저장할때 쓰는 time_t형이 부호있는 32비트 정수여서 저 시간이 지나면 내부적으로 음수로 표현된다는거다.  부호 있는 32비트에서는 2147483647에 1을 더하면 -2147483648이 되서 1970년 또는 1901년을 가리킨다.
32비트 시스템에서 시간 저장할때 쓰는 time_t형이 부호있는 32비트 정수여서 저 시간이 지나면 내부적으로 음수로 표현된다는거다.  부호 있는 32비트에서는 2147483647에 1을 더하면 -2147483648이 되서 1970년 또는 1901년을 가리킨다.
그러자고 time_t를 부호 없는 32비트로 바꾸면 2106년까지는 다룰 수 있는데 음수를 표기 못해서 상대값 등을 나타내는데 어려움이 있고, 64비트로 바꾸면 호환성에 이상이 생긴다. 물론 컴퓨터가 64비트 운영체제면 원래부터 time_t가 64비트니까 상관없다.


== 디시위키에서 나중에 실제로 보자 ==
== 디시위키에서 나중에 실제로 보자 ==

2017년 10월 28일 (토) 09:14 판

본 문서는 향후에 일어날지도 모르는 미래를 담고 있습니다.
이 문서의 내용은 디시 친구들이 미래에서 흘러들어온 전파를 수신하여 사실에 가깝게 적었습니다. 하지만 전파의 상태가 워낙 나빠 실현될지 안 될지는 모르겠습니다.

32비트로 표현된 유닉스 시간이 1970년 1월 1일 00:00 (UTC)에서 2,147,483,647(231 - 1)초 지난 후인 2038년 1월 19일 03:14:08 (UTC)에 특정한 컴퓨터 소프트웨어에 이상이 발생하는 문제가 나타난다는 것이다.

32비트 시스템에서 시간 저장할때 쓰는 time_t형이 부호있는 32비트 정수여서 저 시간이 지나면 내부적으로 음수로 표현된다는거다. 부호 있는 32비트에서는 2147483647에 1을 더하면 -2147483648이 되서 1970년 또는 1901년을 가리킨다.

그러자고 time_t를 부호 없는 32비트로 바꾸면 2106년까지는 다룰 수 있는데 음수를 표기 못해서 상대값 등을 나타내는데 어려움이 있고, 64비트로 바꾸면 호환성에 이상이 생긴다. 물론 컴퓨터가 64비트 운영체제면 원래부터 time_t가 64비트니까 상관없다.

디시위키에서 나중에 실제로 보자

1773716949

이게 2038년 1월 19일에 음수가 된다는 거다. 근데 그때까지 디키가 있을까..?