知識ベース

BCD(文字エンコード)

BCD ( "Binary-Coded Decimal")は、 英数字BCD英数字BCDBCD Interchange Code 、またはBCDICとも呼ばれ、数字、大文字のラテン文字、および6ビット文字コードとしての特殊文字と制御文字の表現のファミリーです。

ASCIIなどの後のエンコーディングとは異なり、BCDコードは標準化されていません。異なるコンピューター製造業者、さらには同じ製造業者の異なる製品ラインでさえ、多くの場合独自のバリアントを持ち、時には固有の文字が含まれていました。一部のFIELDATAバリアントやトランスコードなど、マッピングがまったく異なる他の6ビットエンコーディングは、誤ってBCDと呼ばれることがあります。

BCDの多くのバリアントは、文字「0」から「9」を対応するバイナリ値としてエンコードします。

歴史

技術的には、 2進化10進数は、各10進数が固定ビット数(通常は4ビット)で表される10進数のエンコードを表します。

1928年のIBMカードの導入により、 IBMは英数字情報を表すことができるコードを作成し、後に他のメーカーが採用しました。このコードは、数字の0〜9を1つのパンチで表し、大文字と特殊文字に複数のパンチを使用しています。文字には2つのパンチ(ゾーン+数字)があります。ほとんどの特殊文字には2つまたは3つのパンチ(ゾーン+数字+ 8)があります。

BCDコードは、数字行(9行、非パンチ)を下位4ビットにエンコードし、ゾーン行(3行、非パンチ)を上位にエンコードすることにより、パンチカードコードを6ビットバイナリコードに適合させます。 2ビット。数字のゼロ(行0の単一パンチ)は通常何らかの方法で特別に処理され、2〜7の範囲の数字と行8のパンチを組み合わせることにより、数字コードは値10〜15に拡張されました。 IBM 1620、IBM 1400シリーズ、およびIBM 700/7000シリーズの非Decimal Architectureメンバーを含む、ほとんどの初期のIBMコンピューターで使用されているBCD 英数字のバリエーションを、 バイナリコード10進数およびBCDといいます。

BCDを使用しているベンダーには、バローズ、ブル、CDC、IBM、ゼネラルエレクトリック(1969年にハネウェルがコンピュータ部門を買収)、NCR、シーメンス、スペリー-UNIVACがありました。

IBMは、後にBCDICに基づいて8ビット拡張バイナリコード10進交換コード (EBCDIC)を作成しました。

特殊文字

RecordmarkまたはRecord mark文字(‡として表される)は、レコードの終わりを示すために使用される文字です。この文字のBCDコードは、一部のBCDバリアントでは328です。 Unicodeに最も近いものはU + 29E7⧧THERMODYNAMICですが、これは多くのフォントには見られないため、代わりにU + 2021‡DOUBLE DAGGERがよく使用されます。機能的には、これはEBCDIC IRS文字(ASCII RS )、X'1E 'に対応します。

GroupmarkまたはGroup mark文字 (として表される)は、関連フィールドのグループの開始または終了を示すために使用される文字です。一部のBCDバリアントでは、この文字のBCDコードは778です。グループマークは2015年にUnicode標準化のために提案され、値U + 2BD2⯒GROUP MARKに割り当てられました。機能的には、これはEBCDIC IGS文字(ASCII GS )、X'1D 'に対応します。現在、この位置ではUnicode 10.0になっていますが、SymbolおよびUnifontフォントのみがサポートしています。

対照的に、 WordmarkはBCD文字ではありません 。むしろ、IBM 1401などの一部の可変ワード長コンピューターでワードの終わりをマークするために使用されるフラグビットです。

BCDコードのバリエーション

6ビットBCDコードにはさまざまなバージョンがあります。違いには3つの主要なカテゴリがあります。

  1. ゾーンパンチから高位ビットへのマッピング。すべてのコードはゾーンパンチを00のビットパターンに変換しませんが、一部はアルファベット順を保持する12-11-0順序でゾーンパンチをエンコードしますが、一部は0-11-12順序を使用して、部分的に逆のアルファベットを使用します。
  2. 数字0の処理。パンチされた形式からの直接的な変換では、数字1〜9の前に空白が配置され、0以外の場所に完全にエンコードされます。すべてのコードには、数字の0をすべてゼロのバイナリコードに変換する(および空白を別の場所に移動する)か、バイナリコード001010(10進数の10)を与え、8 + 2パンチを別の場所で使用する特殊なケース処理があります。
  3. 特殊文字の割り当て。基本的な英数字セットを超えてコードに割り当てられた文字は、コンピューターの1つのモデル内であっても、大きく異なります。

「スペイン語圏」では、文字「Ñ」が元のシステムに存在しなかったため、ほとんどのメーカー(Bull、NCR、およびControl Data)で「@」が選択されましたが、データベースを7ビットにマージすると矛盾がありましたASCIIコード。そのコーディングシステムでは「/」文字が選択されているため、同じ文字に対して2つの異なるコードが生成されます。

BCDコードの例

次のグラフは、16ビット(16進数)表記のBCD文字の数値を示しています。これは、4ビットのバイナリコード10進数の構造と2つの追加ビットを最も明確に反映しているためです。たとえば、行2x、列x1の「A」のコードは16進数21、またはバイナリ「01 0001」です。

48文字のBCDコード

BCDICの最初のバージョンは、カードパンチパターンとプリンターのレパートリーに基づいていたため、48文字でしたが、どちらも2の累乗の文字数を推奨していませんでした。

:68 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF 0xスペース1 2 3 4 5 6 7 8 9 0#@ 1x / STUVWXYZ、%2x-JKLMNOPQR $ * 3x&ABCDEFGHI。 ⌑

これは、40文字のパンチカードコードに基づいています。元の37(10桁、26文字、空白)、およびクレジット残高とハイフン付きの名前の印刷に使用される1932 :: 67ハイフンマイナスに加えて3つの商業的に重要な文字、多くの名前と住所でも使用されるアンパサンド(Procter&Gamble、 Mr.&Mrs. Smith)、および小切手を印刷する際に使用されるアスタリスクは、未使用のフィールドを上書きするために使用されます。

IBM 704 BCDコード

IBM 704は、BCDICコードを並べ替えて、通常はアルファベットの照合順序を内部的に許可します。1の前に0、Zの前にAを使用します。

次の表は、IBM 704コンピューターのコード割り当てを示しています。割り当てられていないコード位置は空白として表示されます。

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 0 1 2 3 4 5 6 7 8 9 @
1倍 A B C D E F G H +0
2倍 - J K L M N O P Q R −0 $ *
3倍スペース / S T うん V W バツ Y Z

(+0および−0は、12行目または11行目にオーバーパンチ記号のある数字0のパンチカード規則に対応するめったに使用されない文字でした。)

次の表は、IBM 704コンピューターで使用されるタイプ716プリンターのコード割り当てを示しています。このプリンターは、仮想パンチカード列を入力として受け取るため、6ビットバイナリ文字からのマッピングはソフトウェアによって行われ、プリンターに組み込まれません。

ゾーン
パンチ
数字パンチ
1 2 3 4 5 6 7 8 9 8 + 3 8 + 4
無し * 1 2 3 4 5 6 7 8 9 + -
12 + A B C D E F G H
11 - J K L M N O P Q R $ *
0 0 / S T うん V W バツ Y Z

これは、文字+、-、および*が複製されるため、45文字のレパートリーです(プリンターによって特別に処理されるブランクはカウントされません)。

いくつかのバリエーションがありました。 IBM 704 Fortranには、異なる特殊文字のセットがありました(重複したマイナス記号のみを保持します)。

IBM 709、7090、および7094の後継機にも同様のコードが使用されましたが、一部の特殊文字が再割り当てされています。

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 0 1 2 3 4 5 6 7 8 9 =
1倍 A B C D E F G H +0
2倍 - J K L M N O P Q R −0 $ *
3倍スペース / S T うん V W バツ Y Z ±

IBM 1401 BCDコード

IBM 1401は、ブランクにすべてゼロのコードを使用し、数字のゼロをコード10に移動しました。文書化のために、すべての可能な値の文字形式を定義していましたが、63の非ブランク文字のうち48他のコード値(下の表に網掛けされている)が実際にどのように描かれているかにはかなりのばらつきがありました。他の文字でさえ、IBM 1403プリンターで使用可能なさまざまな印刷チェーン間で異なります。

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x スペース 1 2 3 4 5 6 7 8 9 0 @ >
1倍 ¢ / S T うん V W バツ Y Z = '
2倍 - J K L M N O P Q R $ * ;
3倍 A B C D E F G H

GBCDコード

以下は、BCDの変形であるGE / HoneywellのGBCDコードの表です。

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 0 1 2 3 4 5 6 7 8 9 \
2倍 ^ J K L M N O P Q R - $ * ; '
3倍 + / S T うん V W バツ Y Z _ =

バローズB5500 BCDコード

次の表は、BIC(Burroughs Interchange Code)とも呼ばれるBurroughs B5500コンピュータのコード割り当てを示しています。

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 0 1 2 3 4 5 6 7 8 9 @ >
1倍 + A B C D E F G H

コードページ353

BCDIC-Aコードページは、 CP353とも呼ばれるコードページ353として割り当てられました 。このコードページの一部の文字はUnicodeではありません。この表では、2つの#文字が存在し、+文字が存在しないことが間違っているようです。

0x1Aはレコードマークであり、ダブルダガーとの類似性のために個別に提案されていません。 0x3Fはグループマークです。

PTTC / BCDコードページ

PTTC / BCDには5つのオプションがありました。 5つのコードページがありました。それらを以下に示します。 PTTC / BCD標準オプションは、 コードページ355またはCP355として割り当てられました

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x スペース 1 2 3 4 5 6 7 8 9 0
1倍 @ / S T うん V W バツ Y Z γ
2倍 - J K L M N O P Q R $
3倍 A B C D E F G H

PTTC / BCD Hオプションは、 コードページ357またはCP357として割り当てられました

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x スペース 1 2 3 4 5 6 7 8 9 0 =
1倍 ' / S T うん V W バツ Y Z
2倍 - J K L M N O P Q R $
3倍 + A B C D E F G H

PTTC / BCD通信オプションは、 コードページ358またはCP358として割り当てられました

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x スペース 1 2 3 4 5 6 7 8 9 0 '
1倍 / S T うん V W バツ Y Z
2倍 - J K L M N O P Q R ;
3倍 = A B C D E F G H >

PTTC / BCDモノケースオプションは、 コードページ359またはCP359として割り当てられました

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x スペース 1 2 3 4 5 6 7 8 9 0
1倍 @ / S T うん V W バツ Y Z
2倍 - J K L M N O P Q R $
3倍 A B C D E F G H

PTTC / BCD Duocase Optionは、 コードページ360またはCP360として割り当てられました

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x スペース 1 2 3 4 5 6 7 8 9 0
1倍 @ / S T うん V W バツ Y Z
2倍 - J K L M N O P Q R $
3倍 A B C D E F G H