サイタプログラミングスクールC言語プログラミング入門講座神奈川 楽しめるC言語セミナー スクールブログ 整数の範囲の余...

整数の範囲の余談2(未来のお話)

しばらく、更新が滞ってしまいました。すみません。

今回は整数の範囲に関する余談のその2、未来起こりうる話について書きます。

本題に入る前に、かつて「2000年問題」という騒動が起こったのを覚えていますでしょうか?

これは、年に関する処理を誤ることでコンピュータが誤動作する可能性があるとして指摘されたものです。ただ、このときはほとんど問題には発展しませんでした。

しかし、コンピュータが誤動作する可能性は未来にも存在します。それは、「2038年問題」と呼ばれるものです。

この用語は、初めて聞くかたも多いと思います。

ちなみに、問題が発生する時刻まで特定されています。その時刻は「2038年1月19日3時14分7秒(世界標準時。日本時間では12時14分7秒)」です。

さて、何故このような問題が指摘されているのでしょうか。それは、C言語を含む多くのプログラミングにおける「経過時間のデータ型」に理由があります。

ここでは、C言語の場合で説明します。

C言語の時間に関するマクロ定義や関数宣言は、「time.h」と呼ばれるヘッダファイルでおこなわれています。このヘッダファイルでは、経過時間を示す time なる変数が定義されています。経過時間の起点は「1970年1月1日0時0分0秒(世界標準時)」です。

そして、この変数timeのデータの型が問題なのです。

この変数自体は、typedefされたtime_t型で宣言されています。で、多くの処理系ではこのtime_tの定義元がint型となっています。

int型ということになると符号付きになるので、正の整数側の最大値は2,147,483,647になります。これが何を意味するかというと、「1970年1月1日0時から2,147,483,647秒後までしか、経過時間の処理は正常に動作しない」ということです。

そして、その時刻が冒頭の「2038年1月19日3時14分7秒」になるわけです。

現在では、time_t型の定義元が64ビットである処理系も増えてきました。が、すべてがそういうわけではありません。

このような根拠があるので、「2038年問題」に関しては世間に浸透させないければいけないと考えています。


以上、2回にわたって整数の範囲に関する余談をお話しました。

次回は、再びC言語本来の話題で書く予定です。

 

(2014年8月5日(火) 23:59)

前の記事

次の記事

新着記事

源田です。 こちらの投稿は、かなりひさびさになってしまいました。 さて、最近Android用アプリ開発ツールである「Android Studio」(Android公式のもの)に注目しています。 というのも、最新のバージョン(2.2)でCやC++まわりの連係が強化されたから、な...

しばらく、更新が滞ってしまいました。すみません。 今回は整数の範囲に関する余談のその2、未来起こりうる話について書きます。 本題に入る前に、かつて「2000年問題」という騒動が起こったのを覚えていますでしょうか? これは、年に関する処理を誤ることでコンピュータが誤動作する可能...

今回から2回にわたり、整数の範囲にまつわるお話を書きたいと思います。 その1は、過去(現在でもあるかも)のお話です。 1986年5月に、後に日本を代表するロールプレイングゲーム(RPG)シリーズの初代となるゲームが発売されました。 そのゲームとは。。。ファミコン版のドラゴンク...

前回は、整数の範囲について書きました。 その最後で、「負の整数の2進数数値表現は、どのようになるのか」という点に触れました。今回は、この点について書きます。 まず、結論から書きます。 負の整数の2進数数値表現は、「正の整数の2進数数値表現の全ビットの0/1を入れ換えて、最後に...

前回は「データの型」について、基本的なことを書きました。 その中で、データの型には1バイト(=8ビット)、2バイト(=16ビット)、4バイト(=32ビット)の3種類の整数型があることに触れました。実際には8バイトの整数型もありますが、まずは前述の3種類をしっかり使いこなすことが先です。 ...

レッスン無料相談窓口のご案内

サイタでは、C言語レッスンに関する疑問に
専門カウンセラーがお電話にてご案内しております。
お気軽にご利用ください。

お電話相談窓口はコチラ

ブログ記事 ページ先頭へ