« 角松敏生 | トップページ | 署名するファンタジスタたち »

2008年2月29日 (金)

閏年

 知人の佐藤さんは今年55歳を迎えるが、奥さんはまだ12歳だ。
 なぜかというと、2月29日に生まれているからである。

 というのはネタであって、日本の法律は誕生日の1日前に歳をとることになっているので、実際には奥さんは50歳だ。

 祝日や8月に生まれた子供が「学校が休みだからプレゼントがもらえない」と嘆くのをよく聞くが、うるう日生まれの場合、家族からも祝ってもらえなかったかも知れない。
 きっと、幼少の頃、自分だけ誕生日が来ないことで寂しく過ごしただろう。

 歳は取れども、4年に一度しかやってこない誕生日。
 他の365日に生まれた人よりも、この日への感慨は深いだろう。

 しらべるが調べたうるう年の定義は、
例外を除き、4で割り切れる年。

【 うるう年としない例外 】

■100で割り切れる年
 (1900年、2100年など)
   ↓
 ただし、100で割り切れる年のうち、400でも割り切れる年は「うるう年」とする。
 (2000年、2400年など)

 2000年は「うるう年」の定義が決まった後、初めての「100で割り切れる年のうち、400でも割り切れる年」であった。
 この法則に対応していないコンピューター・システムが起こすであろう障害を「うるう年問題」と呼んだ。

 コンピューター・システムを作る場合、
「2008年はうるう年,2009年はうるう年ではない」というように、1つ1つコンピューターに記憶させることはない。
 うるう年の法則性を検討して数式をプログラムに入れておき、うるう年になると「今年は2月が29日まであるぞ」と、コンピューターが認識するのである。

 では、なぜ2000年のうるう年は「問題」だったのか?

 一般にうるう年判定プログラムの定義には、
 「4で割り切れるが、100で割り切れる場合はうるう年ではない」
という式を入れる。
 ところが、2000年は上記の式だけでいくと、「うるう歳ではない」ことになり、コンピューターは2月29日を、”3月1日”だと誤認する。
 以後の日付は、1日ずつ繰り上がってしまう。

 日付に基づいて、たくさんの処理をこなしているコンピューター・システムでは、これは死活問題。
 そこで、もう一つ、「400で割り切れる年はうるう年である」という条件をつけておくと、1600年、2000年、2400年・・が、きちんとうるう年と認識される。

 この「400年で・・」、の条件が入っていないプログラムで動いているコンピューター・システムでは問題が発生することが、一般に「うるう年問題」と呼ばれていた。

 西暦を 98年 99年 というように二桁で持っていたシステムが 2000年になった時に、時系列判断ができなくなるということもあった。

 2000年を迎えた時、当時生きていた人の大半は、1900年には生まれていなかった。
 うるう年は4年に1回。オリンピックの年。と信じて育って来た人ばかり。
 暦の調整のために例外があるということを知って驚いた。

 1600年にはまだコンピューターが生まれていなかった。
 2000年がコンピューターにとっても「例外的うるう年」の初体験。

 世の中は大いに慌て、賑やかだったが結果的に何事もなく
「人類は事前に想像できることには強い」ということが立証されたのであった。

| |

« 角松敏生 | トップページ | 署名するファンタジスタたち »

くらし」カテゴリの記事