閏年とコンピューターシステム
知人の佐藤さんは今年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年がコンピューターにとっても「例外的うるう年」の初体験。
世の中は大いに慌て、賑やかだったが結果的に何事もなく
「人類は事前に想像できることには強い」ということが立証されたのであった。
| 固定リンク | 0
「くらし」カテゴリの記事
- 夜中のピンポンは雷さんのピンポンダッシュ 電源タップの選び方(2024.09.08)
- 長崎を最後の被爆地に(2024.08.11)
- 原爆炸裂から79年 長崎原爆犠牲者慰霊平和祈念式典(2024.08.10)
- いち早くマイナカードを作った人たちが最初の更新時期を迎えている(2024.08.03)
- 男性の日傘元年 男の日傘デビュー 男の日傘の選び方(2024.07.29)