2011年10月29日土曜日

二進化十進数 (BCD、Binary-coded decimal )


このエントリーをはてなブックマークに追加

BCD

仕組み
  • 十進数の各桁(0~9)を2進数で表す。127(10) は0001 0010 0111(2) という3つのBCD
利点
  • 10進数から2進数に変換すると循環小数が生まれるが、BCDなら大丈夫。
  • BCDを16進数に変換すると、10進数に変換したときと同じ表現になる。(A-Fは使用せず0-9までしか使用してないから)
BCDベースの形式
  • ゾーン形式
  • パック形式

ゾーン10進数(アンパック進数)

仕組み
  • 4桁のゾーンビットと4桁の数値ビットのペア
  • ゾーンビット
    • 数値であることを表す部分
    • 文字で数値を表したときのコードと互換性あり
      • つまり文字コードの違いが問題になる
      • 8ビット文字コードはEBCDICとASCII (JIS8)の二種類に大別されるためあまり問題にならない。

  • 符号ビット
    • 1桁目のゾーンビット部分は符号ビット
    • EBCDICでは1100(2),JIS8コードでは1101(2)
    • ベンダーによって方式が異なることが多く問題になりやすい

パック10進数

仕組み
  • BCD形式で末尾4bitに符号ビットを付加したもの。
  • 符号ビット
    • ゾーンと同じくEBCDICでは1100(2),JIS8コードでは1101(2)
利点
アンパック(ゾーン)だと1桁に8bit必要で無駄が多い。
1バイトで1つなので、以下のような場合は、先端に0000を付加する必要がある。
+1234  0000 0001 0010 0011 0100 1100
-1234  0000 0001 0010 0011 0100 1101

EBCDIC(エビシディック)

  • BCDを拡張したIBMの文字コード
  • 非常に扱いにくい1バイトコード

UTF-EBCDIC

  • EBCDICと互換性があり、Unicodeを表現できる文字コード
  • 設計時に対象だったメインフレームではあまり使われずUTF-16が使われている

0 件のコメント:

コメントを投稿