1. トップページ
  2. コラム
  3. 2038年問題とは何か

2038年問題とは何か

先日、とある案件でユーザーのブラウザを確認していたところ、Windows7の32bitを利用しているユーザーを見つけました。
Windows7自体は、2020年1月14日にOSのサポートが打ち切られます。そのため、マイクロソフトによるセキュリティーサポートが無くなり、新たな脆弱性が見つかっても対応されないため、使用し続けるのはリスクが伴います。
Windows7をお使いの方は、買い替えやOSをWindows10にすることをお勧めします。

前置きがいつもより長いですが、今回は、Windowsの話ではなく、32bitという部分に注目したいと思います。

bitとは何か

bitとは、コンピューターの基本単位で2進数の1桁をさします。
2進数とは2になる時に桁が上がる数え方で、0と1で数字を表現します。
普段は10進数の方が馴染み深いですね。
基本的にコンピューターの世界は、2進数で表されることが多いです。
理由は様々あるのですが、電気がオンの時は1、オフの時は0で表現ができるので、電気で動いているコンピューターは表現がしやすくなります。
32bitは2進数で32桁、64bitは64桁となります。
コンピューターの単位で、バイト(byte)という単位をよく聞くと思いますが、1バイトは8bitと同じです。

32bitで表現できる数字

32bitで正の数と負の数を表現すためには、一番最初の桁を符号ビットとして扱います。符号ビットが1の場合、その数字はマイナスを表現する数字になります。
そのため、32bitが表現できる正の数は、2の31乗-1 = 2,147,483,647まで計算できます。

この 2,147,483,647 が2038年問題のキーとなります。

時間計算によるオーバーフロー

一般的なコンピューターはUNIX時間という時刻を使用して、1970年1月1日0時0分0秒からの経過時間を計算しています。
32bitで表現できる数字は、2,147,483,647で、この数字を秒として考えると、約68年になります。
コンピューターは1970年1月1日0時0分0秒からの経過時間を計算していますので、1970年1月1日0時0分0秒に2,147,483,647秒を足すと、

2038年1月19日3時14分7秒

となり、32bitのコンピューターでは上記の日時までしか表現ができません。
この時間をすぎると、一番最初の桁の符号ビットが1となり、負の値として計算されるため、時間を正確に計算することができなくなります。


上記のような理由から、2038年に32bitのコンピューターが誤動作を起こすため、2038年問題と言われています。
WindowsXPの時から64bitパソコンが提供されており、2038年までは時間がまだあるので、この問題が大きな問題になることは無いと思います。
ちなみに、64bitのコンピューターでは、西暦3000年くらいまで計算できるようです。

ホームページ・ECサイト運用に関する情報をメルマガで配信中!
WEB担当者様向けのお役立ち情報を無料でご案内しております。
登録は下記フォームから!


この記事を書いた人

デザイントランスメディア

Creative & Development Division