10進数の内部表現
巨大な数値を扱い、かつ数値の正確さが求められる(絶対に、四捨五入や切捨てしたくない)ようなシステムでは以下の理由でうまくありません。
・2進数で直接演算するには計算できる桁数をオーバーしてしまう(HELP参照)
・浮動小数点数では誤差が発生する(この欠点はもう勉強済みですよね?)
そこで2進数による直接の計算をあきらめて、10進数の概念で計算させることで上の2つの問題を解決しよう!という方法です。
この表現方法はプログラミング言語の"COBOL"でしか使用していません。
次からいくつかある10進数の内部表現方法を紹介していきます。
「このCPUって64bit」とか聞いたことありますか?それはつまり、2進数で64桁のデータが一度に計算できるということです。逆に、2進数で64桁を超えるような計算は1度ではできないということでもあります。
FFFFFFFFFFFFFFFF + 0000000000000001 = 0000000000000000
<お断り>桁数が多くなってしまうので16進数で説明させていただきます。
というように64bitで表現できる最大値18446744073709551615(10進数)に1を足すと桁あふれを起こして0になってしまいます。65桁目に繰り上がったはずの1は無に葬り去られてしまうのです・・・・。