西暦10000年問題のソースを表示
←
西暦10000年問題
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''西暦10000年問題'''(せいれきいちまんねんもんだい、'''西暦1万年問題''')とは[[コンピュータ]]の誤動作に関する[[年問題]]である。同義の呼称として、10000を意味する10Kを用いた '''Y10K'''がある。 == 概要 == [[2000年問題]](Y2K問題)の解決のため、[[コンピュータ]]は年を4桁であらわすのが一般的になった。しかし、[[西暦]][[10千年紀|10000年]]を迎えると年数が5桁になるため、この仕様を維持し続けたままだと多くの[[プログラム (コンピュータ)|プログラム]]が誤動作するという問題のことを指す。 [[2000年]]を目前にした[[1999年]][[4月1日]]、[[Internet Engineering Task Force|IETF]]は西暦10000年問題の解決に関する{{IETF RFC|2550}}を公開した<ref>[http://www.ietf.org/rfc/rfc2550.txt Y10K and Beyond] {{en icon}} 1999年4月1日 2011年11月12日閲覧<br />[http://www.cam.hi-ho.ne.jp/mendoxi/rfc/rfc2550j.html Y10K and Beyond(Y10Kとその先)] (日本語) 2001年1月13日 2011年11月12日閲覧</ref>。これは毎年の[[エイプリルフール]]に恒例の[[ジョークRFC]]であるが、「コードやプログラムはしばしば彼らの意図した状況を超えてよく使われる」という推論からの帰結であり、また、セキュリティ対策的に重要な「いかなるデータに対しても、意図の範囲を越えるような動作をさせないこと」といった点についての技術的な洞察も含んでいる。 == 表記法 == {{IETF RFC|2550}} では、Y10K問題の解決策として、年の新しい表記法は次のような特徴を持つことが望ましいとしている。 * 既存の4桁の形式と互換性がある。 * 10000年以降の日付を容易に識別できる。 * ASCII順によるソートが可能。 * 宇宙の寿命の範囲をすべて表現できる。 ** 現在の宇宙の年齢は<math>10^{10}</math>年から<math>2 \times 10^{10}</math>年の間と推定される。 ** 宇宙の死は<math>10^{11}</math>年から<math>10^{14}</math>年で起こると推定される。 ** したがって、最低でも未来と過去<math>10^{29}</math>年を表現可能とする。 上記の特徴を持つ日付表記法は固定長では実現できないため、以下のような可変長の表記法が提案されている。 === 西暦 1 - 9999 年 === 現在の4桁表記と互換性を保つため、10進数4桁で表現する。1000年以前の年号は4桁にするために、先頭に0を付ける必要がある。 === 西暦 10,000 - 99,999 年 === 5桁の年の先頭に {{Code|A}} を付与する。つまり、西暦10,000年は {{Code|A10000}} 西暦99,999年は {{Code|A99999}} となる。 ASCII順では {{Code|A}} は {{Code|9}} の後ろになるため、望むソート結果が得られる。 === 西暦 100,000 - 10 の 30 乗年 === 同様に 6 桁の年の先頭に {{Code|B}} を、7桁の年の先頭に {{Code|C}} を付ける。 ASCIIの大文字26文字で、<math>10^{30}</math> 年までが表現可能となる(表現できる最後の年は西暦 999,999,999,999,999,999,999,999,999,999 年で、{{Code|Z999999999999999999999999999999}} となる)。 === 西暦 10 の 30 乗 - 10 の 56 乗年 === 現在の想定では宇宙の寿命は西暦 <math>10^{30}</math> 年よりも前に終わると予測されているが、Y2K問題の教訓から <math>10^{30}</math> 年以降についても表現できるようにしている。 数字の年の先頭にキャレット {{Code|^}} と1文字の英字を付けて表現する。{{Code|^A1000000000000000000000000000000}}や{{Code|^Z99999999999999999999999999999999999999999999999999999999}}のように表現する。 === 西暦 10 の 56 乗 - 10 の 732 乗年 === 数字の年の先頭にキャレットを2つと2文字の英字を付ける。つまり {{Code|A}} から {{Code|Z}} までの26文字で表現する26進数で表現する。 具体的には {{Code|^^AA100000000000000000000000000000000000000000000000000000000}}から{{Code|^^ZZ999..999}}(9が732個続く)となる。 === 西暦 10 の 732 乗年以降 === 数字の年の先頭にキャレットを3つと3文字の英字(3桁の26進数)を付ける。 これ以降も同様にキャレットと英字(26進数)を増やしていくことで、上限なく表現することが可能となる。 === 紀元前 === 紀元前については、紀元後の[[補数]]表現で表わす。具体的には、紀元後の年の表現を以下のように変換する。 * 英字(26進数)は、その補数で置き換える。例えば {{Code|A}} は {{Code|Z}}、{{Code|B}} は {{Code|Y}}、{{Code|C}} は {{Code|X}}、……、 {{Code|Z}} は {{Code|A}}に置き換える。 * 数字は、その補数で置き換える。例えば {{Code|0}} は {{Code|9}}、{{Code|1}} は {{Code|8}}、{{Code|2}} は {{Code|7}}、……、{{Code|9}} は {{Code|0}}に置き換える。 * キャレット {{Code|^}} は感嘆符 {{Code|!}} に置き換える。 * 4桁の年は、先頭にスラッシュ {{Code|/}} を追加する。 * 感嘆符やスラッシュで始まらない年は、先頭にアスタリスク {{Code|*}} を追加する。 例えば、紀元前1年は {{Code|/9998}} 年となる。 == 脚注 == <references /> {{年問題}} {{DEFAULTSORT:せいれき10000ねんもんたい}} [[Category:エイプリルフール]] [[Category:コンピュータ・ユーモア]] [[Category:RFC|2550]] [[Category:ジョーク]] [[Category:日時の表現法に起因するバグ|+10000]] [[Category:未来問題]]
このページで使用されているテンプレート:
テンプレート:Code
(
ソースを閲覧
)
テンプレート:En icon
(
ソースを閲覧
)
テンプレート:IETF RFC
(
ソースを閲覧
)
テンプレート:年問題
(
ソースを閲覧
)
西暦10000年問題
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報