質問: バイナリとbcdコード 2進法と2進化10進法の違いを簡略でいいので 教えてください! 懐かしき「2000年問題」の本を読んでいたら bcdコードの場合 コンピュータの数値認識 → 99に1が足されて 00(で一桁くりあがる) → 問題発生 バイナリ値の場合 → 1999から2000年の変化はただ1増えるに過ぎない と書いてありました。 できれば上記を踏まえて説明してくれると助かります! わかりにくい質問かもしれませんがよろしくです。
回答: 簡略に説明して欲しいと言うことなので、ごく簡略に。 2進法なら2000は11111010000で表します。(11ビット) 実際には16ビットで0000011111010000で扱います。 2進法はコンピュータの計算に都合がいいのです。 実際には2進法は (1)人間に判りにくい。 (2)画面に表示したり、印刷したりするのに10進法に直さなければならない。 という欠点が有るため、10進と2進の中間の記憶形式を取ります。 これが2進化10進数(bcd:10進数の1桁づつをそれぞれ2進で表す)です。99は1001 1001のごとくです。(4ビット表示) 先の方が言われている通り、bcdの世界は乱れていて、4ビット形式、8ビット形式、符号の有り無しなど統一されていません。 2000年問題に限って言えば、bcdとは言っても下2桁を8ビットの文字コード(ascii)2桁でファイルに保持していたといえるでしょう。 1999年は99しか持っていませんから1を足すと00(100では有りません)。従って2000年でなく1900年に戻ってしまいます。 正確でないのを承知でわかりやすく言うと2000年対策というのは先に1900を足してから1を足せば(99+1900+1)で正しい2000年が得られるということなのですね。 簡略とはいえなかったですね。(^^;;