
No.2ベストアンサー
- 回答日時:
当初のUNIXの設計としては、
・基本のデータ型が「32bit符号付整数」だった
・時刻値に、わざわざ符号無し整数という特殊なデータ型にするメリットを見いだせなかった(設計当時は、2038年にオーバーフローするのをそれほど問題視していなかった)
からでしょう。
UNIXを元にした「標準C言語ライブラリ」の「time関数」では、
1970年を起点とした時刻を返すため、32bit符号付整数の場合は2038年にオーバーフローするわけですが
このtime関数は「エラーの時-1を返す」ことで、エラー値と正しい時刻値を区別するようになってますので、
単純に「時刻は符号無し整数」に変更することはできません。
無駄が多いですが、符号付として意味がある仕様になってます。
まあ、先見の明がなかったと言ってしまえばそれまでですが、
それを言うと、ファイルサイズなんかも元々は32bitで、2GB超のファイルの取り扱いができないという問題もありました。
時刻だけの問題ではありません。
また、最近のUNIX系システムでは、32bit系でも、
時刻型(time_t)は64bitにしてますので、それを適切に扱えば、
2038年にオーバーフローすることはありません。
「time_tを32bitとして処理するようなプログラムをそのまま動かし続ける」場合のみ問題になります。
逆に、2038年問題はUNIX系システムだけの問題ではありません。
上述の通り、この時刻は「C言語の標準仕様」として定められていますので、
その仕様に基づいて作られたようなプログラムであれば、
time_t が32bitのシステムであったり、64bitのシステムでもアプリケーション側で32bitで扱ってたりすると、
UNIX以外でも2038年問題が発生します。
この回答へのお礼
お礼日時:2010/03/14 14:10
詳しいご回答ありがとうございます。
符号あり というのは意味があったんですね。
先見の明なしといえばY2K問題もそうだったですね。
7990年後に10000年問題は起きるんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シャットダウン時の イベントI...
-
HDDの不良ブロックの解消方法を...
-
AS/400の文字化けについて
-
ランタイムエラーで、解決方法...
-
Avastのインストール後、「OleM...
-
ギガバイト社のM/B、起動時の警...
-
ssl_error_logのエラー内容(AH...
-
Microsoft Visual C++ Runtime ...
-
エラーチェックに凄い時間がかかる
-
最近ちょくちょくパソコンがフ...
-
Finderが動かない
-
『巡回冗長検査エラー』の対処方法
-
メモリロケーションとは?
-
Windows Updateについて(エラ...
-
ヘルプが起動しなくなり、その...
-
windows11にアップグレード後の...
-
DVDドライブのエラーについて(...
-
アプリケーション使用中にI/O ...
-
ブルースクリーンになってしま...
-
Microsoft Update を何度しても...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ギガバイト社のM/B、起動時の警...
-
シャットダウン時の イベントI...
-
HDDの不良ブロックの解消方法を...
-
ランタイムエラーで、解決方法...
-
アプリケーション使用中にI/O ...
-
メモリロケーションとは?
-
AS/400の文字化けについて
-
GParted のリサイズ/移動につ...
-
Linux Ubuntu18.04の /swapfile...
-
Microsoft Visual C++ Runtime ...
-
Media player 書き込みボタン...
-
ウイルスバスターのスキャン時...
-
LiveUpdateのエラーについて教...
-
2層式DVD書込みでベリファイ時...
-
ブルースクリーンの対処法
-
致命的なエラー0x80070008について
-
パソコンをしばらく放置すると...
-
GPによる信頼済みサイト登録に...
-
Xcode4.4 ビルドエラーで悩んで...
-
Macbook proで「書類“〇〇〇”を...
おすすめ情報