FC2ブログ

とくとく知恵袋

便利なツール

懸賞・ポイント

美容/健康・お試し

得々ショッピング

グルメ・食品

旅行・航空券

求人・在宅ワーク

スポーツ・趣味/資格

「2038年問題」とは

「2038年問題」とは


2038年問題とは、2038年1月19日3時14分7秒を過ぎると、コンピュータが誤作動する可能性があるとされる問題のこと。

UNIX(ユニックス)系のOS(オペレーションシステム)を用いたコンピュータが、協定世界時(UTC)の2038年1月19日午前3時14分7月秒(日本時間では午後0時14分7秒)をすぎると、正しく時刻を認識できなくなることから生じる不具合を指す。
UNIXの管理する日付時刻は、1970年1月1日午前0時0分0秒(UTC)からの経過秒数で保持されている。
だが、ここで用いられている32ビットの符号付き整数では、先頭の1ビットは正負の符号を表すために使われており、2の31乗までの秒数で約21億秒(最大値は (2の31乗 − 1) = 2,147,483,647)しか認識できないため、それを上回ると(オーバーフローし、負と扱われる)プログラムに不具合が生じてしまう。
その秒数を超えるのが、2038年1月19日というわけである。




上から、2進・十進・問題のある時刻・正しい時刻。
3時14分7秒を超えたところで負の値となり、時刻に狂いが生じる恐れがある。
ウィキペディア(Wikipedia)より引用

■2,147,483,647を2進数に変換すると

符号あり(32ビット) 31桁オール1
32桁目は符号で使用されるため、これが正の整数の最大値となる


■2,147,483,648を2進数に変換すると


符号なし(32ビット) 問題なし

符号あり(32ビット) オーバーフロー
符号あり(64ビット) 問題なし

符号あり(32ビット)では負数となる
32ビットで表現できる負数は -2,147,483,648までで、
これを超えるとオーバーフロー


※「32ビットの符号付き整数」で表現できる範囲は、「-2147483648 ~ 2147483647」である。
32ビットの符号付き整数で扱える整数は、先頭1ビットを除く31桁で表現され、2の31乗=2147483648は32桁の2進数(1000 0000 0000 0000 0000 0000 0000 0000)となり、32ビット目の1は符号であり -2147483648を表す。
「32ビットの符号付き整数」で表現できる正の整数の最大値は、2の31乗 − 1 = 2,147,483,647(31桁オール1)となる。

近年のシステムでは、「32bit符号付き整数」の代わりに、さらに大きな数値を扱える「64bit符号付き整数」を使えるようにしたものが登場しています。
日付時刻を「1970年1月1日午前0時0分0秒(UTC)」から管理していても、64ビットの符号付き整数で保持すればこの問題は解消されます。


TOPへ戻る

スポンサーリンク



TOPへ戻る





関連記事

   とくとく知恵袋

スポンサーリンク

今日は何の日

プロフィール

Author:tokutoku230
WEB上で企画・開催されている特集、セール、バーゲン、キャンペーン、イベント等々、お得な情報を紹介していきます。

とくとくショッピング

Google検索の便利な機能

Google検索の裏ワザ
■電卓機能
電卓
■外国の現在時刻
time+国名で検索
■天候を調べる
天気+地名で検索
■カロリーを調べる
カロリー+食品名で検索
■放映中の映画は?
映画+地名で検索
■ヤマトの配送状況を確認
ヤマト+伝票番号で検索
■ドルを円に換算
ドルを円で
■マイルをメートルに換算
マイルをメートルで
■ポンドをグラムに換算
ポンドをグラムで
■現在の株価は?
株価+企業名で検索
■乱数生成
rngまたは乱数で検索
■翻訳
Google翻訳

Google検索の裏ワザ・隠しコマンドいろいろ

インフォメーション

旅行・航空券・ホテルの予約

スポンサーリンク