資格勉強

パック10進数、ゾーン10進数とは?わかりやすく解説【基本情報技術者試験】

資格勉強

基本情報技術者試験にも出てくるパック10進数、ゾーン10進数とはどういうものなのでしょうか?
この記事ではこの2つについてわかりやすく解説していきます!

2進化10進数(BCD)について

パック10進数・ゾーン10進数は、コンピュータでの数値表現の形式の一つなのですが、どちらも2進化10進数(BCD:Binary-Coded Decimal)を拡張したものです。

BCDは簡単に言うと、1桁の10進数を4桁の2進数で表現したものです。10進数の「351」はBCDで「0011 0101 0001」となります。

BCDについては別の記事でも解説しているので、
2進化10進数がなにかわからない!という方はこちらの記事を先に読んでください。

ゾーン10進数とは

まずはゾーン10進数について解説していきます。

ゾーン10進数とはBCDを拡張し、整数部の前にゾーン部(および符号部)を加えて数値を表現する方法です。
BCDでは10進数の1桁を4ビットで表しますが、ゾーン10進数では各桁の前半に4ビットのゾーン部が加わって、1桁8ビット(1バイト)となっています。(最後の桁のゾーン部は符号部になっています。)

整数部の表現方法はBCDと同じです。

ゾーン部は文字コードの種類を表し、主にEBCDICコード、ASCIIコードの2種類が使われます。EBCDICコードは「1111」、ASCIIコードでは「0011」をゾーン部として使います。

符号部は処理系によって異なることがありますが、基本的には正の場合「1100」、負の場合「1101」とします。

以下は10進数の+951、-951をゾーン10進数に直した例です。

すしそ
すしそ

10進数だと3桁なのにゾーン10進数だとずいぶん長くなりましたね

ゾーン10進数は次に説明するパック10進数と対比して、アンパック10進数とよばれることもあります。

パック10進数とは?

パック10進数とはBCDを拡張し、末尾に4ビットの符号部を加えて数値を表現する方法です。

整数部の表現方法はBCDと同じです。

符号部はゾーン10進数と同様に、基本的には正の場合「1100」、負の場合「1101」とします。ただし、コンピュータによっては数値が異なる場合があります。

パック10進数ではゾーン10進数と違って、文字コードを気にする必要はありません。

以下は10進数の+951、-951をパック10進数に変換した例です。

+19を変換した場合は「0001 1001 1100」となりますが、パック10進数では1バイト単位で数値を扱うので、パック10進数の最初に「0000」を加えて「0000 0001 1001 1100」として全体が8の倍数ビットになるようにします。

すしそ
すしそ

10進数が偶数桁のときはパック10進数の先頭に0000を加えるんだね

まとめ

ゾーン10進数・パック10進数はそれぞれBCDを拡張したものです。

ゾーン10進数には文字コードを表すゾーン部、正負を表す符号部が必要です。
データ量が多くなりますが、数値と文字の扱いが同じになり、変換が行いやすくなるというメリットがあります。

バック10進数には正負を表す符号部が必要で、全体のビット数を8の倍数にする必要があります。
ゾーン10進数に比べて必要なデータ量が少なくて済むという特徴があります。

コメント

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