web-dev-qa-db-ja.com

なぜUnixはタイムスタンプを符号付き整数に格納するのですか?

タイムスタンプを表すために符号付き整数が使用されるのはなぜですか? 1970年には0として表される明確に定義された開始があるので、その前に数値が必要なのはなぜですか?負のタイムスタンプはどこで使用されていますか?

25
Bakudan

Cの初期のバージョンには、符号なし整数はありませんでした。 (一部のプログラマーは、符号なし演算が必要なときにポインターを使用しました。)どちらが最初に来るのか、time()関数または符号なし型はわかりませんが、符号なし型が汎用的に使用できるようになる前に、表現が確立されたと思います。また、2038年は将来的には十分に心配するほどの価値はなかったでしょう。多くの人がUnixがまだ存在するとは思っていなかったと思います。

署名付きのもう1つの利点time_tを64ビットに拡張すると(一部のシステムでは既に発生しています)、1970年より前の時間を表す機能を失うことなく、数千億年後の時間を表すことができます(そのため、私は32ビットに切り替えることに反対しています)。 符号なしtime_t; 64ビットに移行するのに十分な時間があります。)

37
Keith Thompson

1970年1月1日より前のタイムスタンプと日付をサポートするためです。

13
amphetamachine