福岡のホームページ制作会社

  1. 2038年問題とは何か

COLUMNコラム

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年くらいまで計算できるようです。


この記事を書いた人 宍戸 陽介 Creative & Development Division