パック十進数
コンピュータさんの数字の扱い方だよ
十進数の各桁を、それぞれ二進数4桁(4ビット)で表現するよ
簡単に書くよ
パック十進数(読:パックジュッシンスウ 英:packed BCD)とは
コンピュータ上での数字の扱い方のひとつ
であり
例えば「12」を「0001 0010」のようにする、十進数
(各桁が「10」になると桁上がりする数字)の数字の各桁を それぞれ二進数
(各桁が「2」になると桁上がりする数字)4桁(4ビット
(0か1が入る箱))で表現するやり方(で表現した数字)
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・ビット
・バイト
・十進数
・二進数
・二進化十進数(BCD)
・アンパック十進数(ゾーン十進数)
について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ビットは、コンピュータさんの世界における「0か1が入る箱」です。
あるいは、この「0か1が入る箱」の数を表す単位です。
例えば「4ビット」であれば「0か1が入る箱が4つあるよ」の意味になります。
バイトは「ビットが8つ集まったもの」です。
0か1が入る箱(ビット)が8つ入るくらいの大きな箱がバイトだと思ってください。
あるいは、このデカい箱の数を表す単位がバイトです。
「2バイト」であれば「ビットが8つ入る大きさの箱が2つあるよ」の意味になります。
……というのが基本ですけどね。
こだわり派の人がいるかもしれないので補足しておきます。
実は必ずしも1バイトが8ビットとは限りません。
環境によっては「1バイト=7ビット」のときもあれば「1バイト=9ビット」の場合も あります。
ただし、一般的には
1バイト=8ビット
です。
それ以外は例外と捉えて、あまり気にしないでください。
十進数は「各桁が『10』になると桁上がりする数字」です。
みなさんが日常生活で使っている数字は、ほとんどが十進数です。
二進数は「各桁が『2』になると桁上がりする数字」です。
具体的には
十進数:二進数
0:0
1:1
2:10
3:11
4:100
5:101
6:110
7:111
8:1000
9:1001
10:1010
のような感じです。
二進化十進数は「十進数の数字の各桁を、それぞれ二進数4桁で表現するやり方(で表現した数字)」です。
「BCD」と表現されることも あります。
「BCD」と表現された場合は「Binary-Coded Decimal(バイナリ・コーデッド・デシマル)」の略です。
気が向いたら、覚えてあげてください。
※「Binary-Coded Decimal」を何となく日本語にすると「二進法で符号化された十進数」となります。[詳細]
例えば、そうですね。
十進数で「19」という数字が あったとしましょう。
二進化十進数にするときは数字の各桁を分けて考えます。
具体的には「1」と「9」に分けるのです。
十進数の「1」を二進数4桁で表現すると「0001」です。
十進数の「9」を二進数4桁で表現すると「1001」になります。
2つをくっつけた「0001 1001」が十進数「19」を二進化十進数で表現したものです。
基本的には、これだけです。
桁数が増えても考え方は同じです。
例えば3桁の十進数「125」であれば「1」と「2」と「5」に分けて、それぞれ二進数4桁「0001」「0010」「0101」に変換して、くっつけるだけです。
なお、二進数4桁に変換するのは「9」を表現するのに4桁必要だからです。
十進数「9」は二進数で表現すると「1001」になります。
「二進数が4桁あれば0から9まで表現できるよね」という理由で4桁になっているのです……多分。
アンパック十進数は、コンピュータさんの数字の扱い方のひとつで「十進数の数字の各桁を、それぞれ二進数8桁(=1バイト)で表現するやり方(で表現した数字)」です。
「ゾーン十進数」とも呼ばれます。
アンパック十進数の考え方は二進化十進数と同じです。
二進化十進数では二進数4桁だったのがアンパック十進数では8桁になるだけです。
それでは、どうして4桁で済むのに8桁使うのでしょうね?
それはコンピュータさんの都合が関係してきます。
二進数4桁は4ビットです。
二進数4桁を表現するには、0か1が入る箱が4個必要ですよね。
二進数8桁は8ビットです。
二進数8桁を表現するには、0か1が入る箱が8個必要ですよね。
ただし、8ビットは1バイトです。
ビットが8つ入る大きな箱(バイト)を1つ用意すれば、それで済みます。
小さい箱が4つもあるより大きい箱が1つだけある方が管理しやすそうですよね。
コンピュータさん的には4ビット単位で管理するより1バイト単位で管理する方が楽なのです。
そんな理屈……かどうかは知りませんが、多分そんな理屈で
「頑張れば二進数4桁(4ビット)で表現できるけど、管理上楽だから二進数8桁(1バイト)で表現するね!」になっている二進化十進数っぽいやつ
がアンパック十進数です。
なお、実際の中身は、もう少しだけ複雑です。
例えば「マイナスの数は、どう表現するの?」とかがありますからね。
そこら辺の あれやこれやは他のところで勉強してください。
以上を踏まえて
十進数の数字の各桁を、それぞれ二進数4桁(4ビット)で表現するやり方(で表現した数字)
が「パック十進数」です。
アンパック十進数では1桁表現するのに1バイト(8ビット)使いました。
ただし、実際には4ビットあれば表現できます。
1バイト(8ビット)使っているのは管理が楽だからです。
4ビットあれば表現できるのに1バイト(8ビット)使っているのです。
無駄ですね。
もったいない!
そんな考え……かどうかは知りませんが、多分そんな考えで
「頑張れば二進数4桁(4ビット)で表現できるけど、管理上楽だから二進数8桁(1バイト)で表現していたのね!でも、やっぱり無駄が出るのがもったいないから二進数4桁(4ビット)で表現するよ!」になっている二進化十進数っぽいやつ
がパック十進数です。
なお、実際の中身は、もう少しだけ複雑です。
例えば「マイナスの数は、どう表現するの?」とかがありますからね。
そこら辺の あれやこれやは他のところで勉強してください。
あと、話を単純化するためにアンパック十進数の例の「9」を「00001001」と表現しましたが、アンパック十進数の先頭4ビットは「ゾーンビット」や「ゾーン部」などと呼ばれ、別の用途で使われています。
そこら辺の あれやこれやも他のところで勉強してください。
一言でまとめるよ
まぁ「パック十進数」って単語が出てきたら「十進数
(各桁が「10」になると桁上がりする数字)の各桁を、それぞれ4ビット
(0か1が入る箱)で表現するやり方(で表現した数字)なんだな~」と お考えください。
おまけ
■訳してみるよ
「pack(パック)」の意味は「包み」とか「荷物」とか「包む」とかです。
「十進数」は日本語ですね。
何となく くっつけると
包まれた十進数
となります。






