Okapi Project   Web technological site for the beginner... Top

データ表現

10進数の内部表現

巨大な数値を扱い、かつ数値の正確さが求められる(絶対に、四捨五入や切捨てしたくない)ようなシステムでは以下の理由でうまくありません。

・2進数で直接演算するには計算できる桁数をオーバーしてしまう(HELP参照)

・浮動小数点数では誤差が発生する(この欠点はもう勉強済みですよね?)

そこで2進数による直接の計算をあきらめて、10進数の概念で計算させることで上の2つの問題を解決しよう!という方法です。

この表現方法はプログラミング言語の"COBOL"でしか使用していません。

次からいくつかある10進数の内部表現方法を紹介していきます。

HELP!

「このCPUって64bit」とか聞いたことありますか?それはつまり、2進数で64桁のデータが一度に計算できるということです。逆に、2進数で64桁を超えるような計算は1度ではできないということでもあります。

FFFFFFFFFFFFFFFF + 0000000000000001 = 0000000000000000
<お断り>桁数が多くなってしまうので16進数で説明させていただきます。

というように64bitで表現できる最大値18446744073709551615(10進数)に1を足すと桁あふれを起こして0になってしまいます。65桁目に繰り上がったはずの1は無に葬り去られてしまうのです・・・・。