ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
電子計算機における数値の表現方法の一つ。「2進化10進数」。
具体的な格納方法には大きく二通り「アンパック型(ゾーン型)」「パック型」がある。
アンパック型は10進数の1桁を1バイトに対応させるもので、COBOLで通常使われるのはこの方式である。実際の数値は下位4ビット程度を利用し、残りの上位ビットは普段は1111などとしておいて、必要に応じて負数(たとえば最上位バイトを1101とする)を表わす情報に利用する。この仕様がやがて、文字コードのEBCDICへと進化した。
パック型は10進数の1桁を2進数の4桁に対応させるもので、COBOL風の呼び方で「パック化された」数値(PACKED-DECIMAL)と表現する。10進数一桁が、そのまま16進数の1桁に相当するように置き換えられる。メモリー効率はパック化されていない場合の倍程度にはなるが、演算処理が若干遅くなるという弱点もある。
Z80などでは、CPU自体がBCDの計算に対応していた。
BCD同士の加算・減算は、ADD/ADC、SUB/SBC命令を用い、その後DAA命令を実行する。DAA命令は、演算後のC、H、Nフラグを参照し、アキュームレーターの数値をBCDに調整するものである。
具体的には、加算後のDAAは、次の動作をする。
減算後のDAAは、加算の場合の06Hと60Hの加算が減算になる。
直前の命令が加算か減算かはNフラグ(減算フラグ)が参照される。Nは、減算を行なうと立つ。
10進数と、パック型BCD対応例を以下に示す。
10進数 | BCD(2進) | BCD(16進) |
---|---|---|
1 | 0001 | 0x1 |
12 | 0001 0010 | 0x12 |
123 | 0001 0010 0011 | 0x123 |
1234 | 0001 0010 0011 0100 | 0x1234 |
12345 | 0001 0010 0011 0100 0101 | 0x12345 |
コメントなどを投稿するフォームは、日本語対応時のみ表示されます