BCD

読み:ビースィーディー
外語:BCD: Binary Coded Decimal 英語 , BKD: binar/e kod/it/a dek/um/o エスペラント
品詞:名詞

電子計算機における数値の表現方法の一つ。「2進化10進数」。

目次

10進数の1桁を、2進数の4桁または8桁(16進数の1桁または2桁)に対応させて値を格納する。

この方式で必要な桁数を用意して演算させれば、10進数演算で誤差が出ないという点で優れており、COBOLなどでもよく使われた。

方法

具体的な格納方法には大きく二通り「アンパック型(ゾーン型)」「パック型」がある。

アンパック型は10進数の1桁を1バイトに対応させるもので、COBOLで通常使われるのはこの方式である。実際の数値は下位4ビット程度を利用し、残りの上位ビットは普段は1111などとしておいて、必要に応じて負数(たとえば最上位バイトを1101とする)を表わす情報に利用する。この仕様がやがて、文字コードのEBCDICへと進化した。

パック型は10進数の1桁を2進数の4桁に対応させるもので、COBOL風の呼び方で「パック化された」数値(PACKED-DECIMAL)と表現する。10進数一桁が、そのまま16進数の1桁に相当するように置き換えられる。メモリー効率はパック化されていない場合の倍程度にはなるが、演算処理が若干遅くなるという弱点もある。

CPU命令

Z80などでは、CPU自体がBCDの計算に対応していた。

BCD同士の加算・減算は、ADD/ADC、SUB/SBC命令を用い、その後DAA命令を実行する。DAA命令は、演算後のC、H、Nフラグを参照し、アキュームレーターの数値をBCDに調整するものである。

具体的には、加算後のDAAは、次の動作をする。

  1. 加算結果の下位4ビットが0AH以上、またはハーフキャリーフラグが立っていれば、06Hを加算する。
  2. 更にA0H以上か、1の結果でキャリーフラグが立てば、60Hを加算する。

減算後のDAAは、加算の場合の06Hと60Hの加算が減算になる。

直前の命令が加算か減算かはNフラグ(減算フラグ)が参照される。Nは、減算を行なうと立つ。

対応表

10進数と、パック型BCD対応例を以下に示す。

10進数BCD(2進)BCD(16進)
1 00010x1
12 0001 00100x12
123 0001 0010 00110x123
1234 0001 0010 0011 01000x1234
123450001 0010 0011 0100 01010x12345
関連する用語
パック10進数
BCC

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club