少しでも分かりやすく伝えたいゾーン10進数、パック10進数

少しでも分かりやすく伝えたいゾーン10進数、パック10進数

皆さんこんにちは!!
今回はゾーン10進数とパック10進数について解説したいと思います!
今回のゾーン10進数とパック10進数を解説するにあたって、BCDコードの内容が含まれます。BCDコードについて知らない方は先に下のURLにて詳しく説明しているので宜しければそちらを先にご覧ください。

https://it.sumahotektek.com/it-bcd-code/

BCDコードのおさらい

かなり大雑把なおさらいです。
BCDコードは、10進数一桁を2進数4桁で表す方法で「91」という10進数をBCDコードで表すと「1001 0001」になります。
この形式には2種類の表現方法があり、それが今回紹介するゾーン形式とパック形式になります。

ゾーン形式とは

英語表記は「zoned decimal format」です。
ゾーン形式とは2進化10進数を表現する方法の1つです。

ゾーン形式詳細

ゾーン形式の中身は、ゾーン部と数字部を4bitごとに交互に書き込み、最後の場所だけゾーン部が符号部に変わっているような表現方法です。
ゾーン部は文字コードによって異なり、ASCIIコードの場合なら「0011」、EBCDICコードの場合なら「1111」が中に入ります。
数字部は2進化10進数が中に入ります。
符号部は0以上なら「1100」、負数なら「1101」が中に入ります。

例として、「-273」という数字をASCIIコードであてはめていきます。

ゾーン形式値代入例

今回の場合はこのように表現することができます。

パック形式とは

英語表記は「packed decimal format」です。
パック形式もゾーン形式と同様に2進化10進数を表現する方法の1つです。

パック形式詳細

パック形式の中身は、最後の4bit以外は数字部が中に入り、最後の4bitのみが府符号部になります。
数字部はゾーン形式と同じで2進化10進数が中に入ります。
符号部も同様で0以上なら「1100」、負数なら「1101」が中に入ります。

今回も「-273」という数字を例にASCIIコードであてはめていきます。

パック形式値代入例

今回の場合はこのように表現することができ、ゾーン形式よりも少ないバイト数で表現することができます。

まとめ

ゾーン形式は、

ゾーン部、数字部、ゾーン部、数字部…符号部、数字部

パック形式は、

数字部、数字部…数字部、符号部

この順番で値を入れていくことで、それぞれの形式で表現することができます。