- 締切済み
パック10進表記法についての質問です。
数値の部分が6桁の符号付10進数を、パック10進表記法で表すと、必要なバイト数は 幾らか。 この問いについての解答と解説をよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
パック10進数は、数値部と符号部で構成、 数値部は、10進数字1桁を4ビットの2進数(0000)~(1001)で表現し、符号部は、右端の4ビット(数値1桁分に相当、値も固定)で表す。 数値部と符号部を合わせた、必要バイト数は、<(数値部桁+1)÷2>をバイト単位で切り上げる。ビット数に換算するときは、<(数値部桁+1)X4÷8>をバイト(=8ビット)単位で切り上げる。 問題は、数値部が 6桁となるパック10進数のバイト数を求めること。 (6+1)÷2=3.5の(端数)切り上げで、4バイト、 ビット数換算だと、 数値部:6桁 × 4ビット = 24ビット 符号部:4ビット 計28ビットなので、4バイト(28÷8ビット:8ビット単位で切り上げ)が必要。 <<関連で覚えるべき項目>> コンピュータで数値を記憶するときの内部形式の基本は2進数。 これに対して、例えば印刷できる形式は外部形式、10進数字(文字:0~9)データ1桁は1バイト(8ビット)を要する。この2つの形式の中間がBCD、パック、ゾーン(アンパック)形式。 先ず、符号を考えないものから、 <2進化10進数(BCD:Binary Coded Decimal)> 10進数字1桁を4ビット毎の2進数(0000)~(1001)で表現するのがBCD。1バイトに10進数2桁を記憶できる。可変長形式で符号はない。(符号は別扱い) 必要バイト数は、<10進数字桁数÷2>をバイト単位で切り上げる。 2進数に比べると、はるかに多くのビットを必要とする。 <パック10進数><<冒頭の説明と一部重複>> パック10進数は、BCDに符号部をセットした形式。数値部と符号部で構成、 数値部は、4ビットに10進数1桁が対応(BCDと同じ)、 符号部は、右端の4ビット(数値1桁分に相当、値も固定)で表す。値はコード系で異なる。 <ゾーン10進数> 10進数字の文字データに最も近い形式。アンパック形式ともいう。 10進数の1桁(4ビット)にゾーン部(同じく4ビット:値は固定)を付加して、計1バイトで表現。 パック形式と同じく数値表現なので符号があり、最下位桁のゾーン部を符号部(値は固定)に使用。 ゾーン部と符号の値はコード系で異なる。
パック10進数は、1桁を4ビットで表し、符号は末尾に4ビットを付加して表します。 偶数桁のときは、先頭に 0000 を付加します。 例えば、+123456 をパック10進数で表すと、 0000 0001 0010 0011 0100 0101 0110 1100 ( 0 1 2 3 4 5 6 +) となるので4バイトです。
- jjon-com
- ベストアンサー率61% (1599/2592)
http://okwave.jp/qa/q6896310.html の私の回答ANo.1