ゾーン10進数・パック10進数とは

マトリックス基本情報

ゾーン10進数・パック10進数

コンピュータでは、基本的に数値を2進数で表します。
しかし、文字データや10進数との対応が取りやすくするため、キーボード等でのデータ入力時には10進数を使うことが多いです、
そのため、2進数への変換前に10進数のままデータを処理することがあります。
そこで、10進数の桁をそのまま2進数に持ち込んだのが、ゾーン10進数やパック10進数になります。
そして、コンピューター内部で数値を表現するのに使われるコードとして、2進数10進数とも呼ばれるBCDコードがあります。

BCDコード

BCDコードは,2進数と10進数のちょうど中間の性質を持つような数値の表現方法です。
「10進数を各桁に分離して,それらを2進数で表す」という方法で表します。10進数の各桁は最大で9ですので,2進数では4桁分用意します。
つまり、10進数1桁の数字を2進数4ビットで表したものです。2進数4ビットだと16通りの表現がでますが、1桁の数字のみ表しますので、10~16(2進数で1010~1111)までは使用しません。

BCDの例)

(987)10 ⇨ (9 | 8 | 7)10に分けます。
↓2進数に変換
(1001 | 1000 | 0111)2

ゾーン10進数

BCDコードでは、4ビットで10進数の1桁を表現していましたが、ゾーン10進数は10進数1桁を8ビット(=1バイト)で表わしたものです。
上位4ビットのゾーン部(最下位バイトは符号部)と呼ばれる部分では、数値データであることを表し、下位4ビットを整数部といい、整数部はBCDコードで数値を表します。

ゾーン部は、JISコード形式では(0011)、EBCDIC形式では(1111)を割り当てます。これは0~9の値をそのままそれぞれコード形式の’0’~’9’に対応させることになるので、10進数値と文字コードの対応がとれて都合が良いのです。
最下位桁のゾーン部は符号部として使用し、正の場合は(1100)、負の場合は(1101)を割り当てます。

JISコード形式の「987」
00111001 | 00111000 | 11000111
  ゾーン 数値1 ゾーン 数値2  符号  数値3
JISコード形式の「-987」
00111001 | 00111000 | 11010111
  ゾーン 数値1 ゾーン 数値2  符号  数値3
EBCDIC形式の「987」
11111001 | 11111000 | 11000111
  ゾーン 数値1 ゾーン 数値2  符号  数値3
EBCDIC形式の「-987」
11111001 | 11111000 | 11010111
  ゾーン 数値1 ゾーン 数値2  符号  数値3

パック10進数

パック10進数は、10進数の各桁の値を4ビットの2進数で表現するため、10進数の2桁を1バイトで表したものです。
数値部はBCDコードを使って表し、符号部は最下位バイトの下位4ビットを追加します。
偶数桁の場合符号部を足すと2桁にならないので先頭に「0」を追加します。

例えば「1234」をパック10進数で表すと、
「0000 | 0001 | 0010 | 0011| 0100 | 1100」
      0         1         2         3         4        +
となります。先頭の「0000」は0を2進数で追加し、最下部は「+」であることを表しています。

パック10進数表記法の長さは、バイト単位で決定されるので、6桁であっても7桁であっても4バイト(32ビット)分必要となります。

コメント

タイトルとURLをコピーしました