Я видел это много раз, например. на UNIX, в MySQL timestamp и т.д .: Эпоха начинается в 1970-1-1, но максимальный записываемый год 2038. Теперь позвольте мне рассчитывать:Почему мы не используем полные 32 бита для хранения 136 лет с Эпохи?
2^32/60/60/24/365+1970
2106
Таким образом, если мы использовали полные 32 бита, то мы, естественно, получить до 2106 года без каких-либо проблем. Но, по-видимому, 2038 год соответствует только 31 бит. Так почему мы выбрасываем один бит? Используя полные 32 бита, мы могли бы надеяться, что нам не придется решать проблему, так как мы, вероятно, сначала уничтожим Землю ...
Реакция на комментарии: конечно, это потому, что она подписана, но зачем нужна метка времени должны быть подписаны? Вот в чем вопрос.
-1 используется для указания ошибки, поэтому я предполагаю, что это должно быть подписано, и дать время до 1970 года – dalle
Знаковый бит позволяет отрицательные даты, т.е. даты до 1970 года –
@MikeW не MySQL, по крайней мере. Вы не можете представлять даты до 1970 года в метку времени. – TMS