二進化十進表現

二進化十進数(BCD、Binary-coded decimal)は、コンピュータにおける数値表現の一種で、十進法の各桁を二進数の4ビットで表す方式です。これは、0から9までの値を二進数で表現するために用いられます。例えば、十進数の「127」は、BCDでは「0001」「0010」「0111」と表現されます。

BCDには主に2つの形式があります。一つは「ゾーン形式」で、もう一つは「パック形式」です。ゾーン形式では、各桁が8ビット(1バイト)で表現され、そのうち4ビットが数値、残りの4ビットがゾーン(符号やその他の情報)を表します。一方、パック形式では、各桁が4ビットで表現され、よりコンパクトな形式で数値を格納できます。このパック形式は、ファイルなどに数値を保存する際に、十六進数で表示すると十進数と同じように見えるという利点があります。ただし、符号部を持つ場合はこの限りではありません。

BCDの利用例として、電子回路における数字表示素子が挙げられます。BCD対応の表示素子には、4本の入力信号でBCDの4桁を直接入力できます。二進数で扱う場合に必要な変換が不要なため、データバス上の信号をそのまま利用できるというメリットがあります。

コンピュータでは、通常、二進数で演算を行うのが効率的ですが、十進数との変換を回避したい場合にBCDが用いられます。これは、特に小数の丸め誤差が問題となる場合に重要です。例えば、十進数の「0.1」は二進数では無限小数になるため、二進数の浮動小数点演算では誤差が生じることがあります。この誤差が累積すると、計算結果に大きな影響を及ぼす可能性があります。

このような問題を避けるため、通貨計算など正確性が求められる分野では、BCDが活用されます。例えば、Java浮動小数点数を使って0.1を1万回足すと、結果は1000ではなく、わずかな誤差を含んだ値になります。BCDを使うことで、このような誤差を抑えることができます。

ただし、BCDでも、例えば10.0 / 3.0のような計算では、十進数の無限小数が発生するため、完全に正確な結果を得られるわけではありません。そのため、近年では、より効率的に十進数を表現できる Densely packed decimal(DPD)方式が注目されています。IEEE 754の2008年の改訂では、このDPD方式を採用した十進浮動小数点数が追加されました。

BCDは、単にコンピュータの内部処理の問題ではなく、十進法を使用する社会からの要請によって生まれた技術です。十進数での表現と計算が求められる状況において、BCDは重要な役割を果たしています。

関連技術として、IBM 1401という初期のシステムで初めてBCDが使用されたことが知られています。また、パック10進数、アンパック10進数(ゾーン10進数)、3増し符号二五進法なども、BCDと同様に十進数を表現する技術です。その他、COBOLやMSX-BASICなどのプログラミング言語もBCDを活用しています。EBCDICはBCDを拡張した文字コードの一つであり、バイナリエディタもBCDのデータを表示・編集するのに用いられます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。