>サイトトップへ >このカテゴリの一覧へ

X 6134 : 1997 (ISO/IEC 12042 : 1993)

(1) 

まえがき

この規格は,工業標準化法に基づいて,日本工業標準調査会の審議を経て,通商産業大臣が制定した日

本工業規格である。

この規格の一部が,技術的性質をもつ特許権,出願公開後の特許出願,実用新案権,又は出願公開後の

実用新案登録出願に抵触する可能性があることに注意を喚起する。主務大臣及び日本工業標準調査会は,

このような技術的性質をもつ特許権,出願公開後の特許出願,実用新案権,又は出願公開後の実用新案登

録出願にかかわる確認について,責任はもたない。

JIS X 6134

には,次に示す

附属書がある。

附属書 A(参考)  2 進算術符号化アルゴリズムの例


X 6134 : 1997 (ISO/IEC 12042 : 1993)

(1) 

目次

ページ

1.

  適用範囲

1

2.

  引用規格

1

3.

  適合性

1

4.

  表記法

1

5.

  アルゴリズムの識別子

1

6.

  用語の定義

1

6.1

  ブロック

2

6.2

  符号化ブロック

2

6.3

  符号列

2

6.4

  符号化

2

6.5

  入力事象

2

6.6

  論理データレコード

2

6.7

  トレーラ

2

6.8

  固有テーブルペア

2

7.

  略号

2

8.

  圧縮アルゴリズム

2

8.1

  概要

2

8.2

  符号生成器

2

8.3

  符号化ブロックの構成

2

8.4

  符号列

3

8.5

  テーブルペア

3

8.6

  符号化

3

8.6.1

  ノーマルモード

3

8.6.2

  ランモード

5

8.7

  ブロックの符号化の完了

5

附属書 A(参考)  2 進算術符号化アルゴリズムの例

9


日本工業規格

JIS

 X

6134

: 1997

 (

12042

: 1993

)

情報交換用データ圧縮

2

進算術符号化アルゴリズム

Information technology

−Data compression for

information interchange

−Binary arithmetic

coding algorithm

序文  この規格は,1993 年初版として発行された ISO/IEC 12042 (Information technology−Data compression

for information interchange

−Binary arithmetic coding algorithm)  を翻訳し,技術的内容及び規格票の様式を変

更することなく作成した日本工業規格である。

1.

適用範囲  この規格は,情報を表現するビット数を削減するデータ圧縮の 2 進算術符号化アルゴリズ

ムについて規定する。このアルゴリズムは,ロスレス圧縮の情報交換で使用する。

2.

引用規格  次の規格は,この規格がよりどころとしている規格を含んでいる。出版時に明示された版

号が有効であるが,すべての規格は改正されるので,この規格の関係者は,次の最新のものを調査し適用

するよう推奨する。

ISO/IEC 11576 : 1994

  Information technology−Procedure for the registration of algorithms for the loseless

compression of data

データのロスレス圧縮アルゴリズムは,ISO/IEC 11576 に従って登録する。

3.

適合性  圧縮アルゴリズムは,この規格のすべての要求を満たすとき,この規格に適合する。

4.

表記法  表記法は,特に指定がない限り,次による。

−  各フィールドのバイトは,バイト 1 を最上位として最初に配列する。各バイトのビットは,ビット 1

を最上位として最初に,ビット 8 を最下位として最後に配列する。

− 16 進数は,丸括弧内に数字及び文字 A∼F で表す。

−  ビットは,

“0”又は“1”で表す。

−  2 進数表記の数字及びビットの組合せは,

“0”及び“1”の列で表す。

−  2 進数表記の数字及びビットの組合せは,最上位ビットを左とする。

5.

アルゴリズムの識別子  ここで規定するアルゴリズムの識別子は,“16”とする。

6.

用語の定義  この規格で用いる用語の定義は,次による。


2

  (ISO/IEC 12042 : 1993)

6.1

ブロック  (block)    通常 512 バイト長(8.2 参照)をもつ論理データレコード (LDR) の一部。

6.2

符号化ブロック  (Code Block)    圧縮後トレーラを付加したブロック。

6.3

符号列  (Code String)    符号化済みの論理データレコード。

6.4

符号化  (encoding)    ブロック符号から符号化ブロックを生成する方法。

6.5

入力事象  (input event)    検索中の符号生成器への入力。ランモードではバイト単位,ノーマルモー

ドではビット単位とする。

6.6

論理データレコード  (Logical Data Record)    データ圧縮器への入力データ。

6.7

トレーラ (trailer)   圧縮及びパッドビットを付加後のブロックへの追加データ。

6.8

固有テーブルペア  (Unique Table Pair)    ランモードだけに使用する 256 個のテーブルペアの最後。

7.

略号

CV

現在値 (Current Value)

EV

予測値 (Estimated Value)

LDR

論理データレコード  (Logical Data Record)

TP

テーブルペア (Table Pair)

8.

圧縮アルゴリズム

8.1

概要  LDR をロスレスデータ圧縮によって 1 パスで符号列に変換する。適切な復元方法を用いて符

号列から元の LDR に復元する。

8.2

符号生成器  LDR は,最後のブロックを除き 512 バイトのブロックに分割し,最後のブロックは,

512

バイト以下とする。ブロックは,0 から 7 の番号をもつ 8 個の符号生成器に符号生成器 0 から順番に入

力する。LDR が 4096 バイト以上の場合,符号生成器 0 に戻り,圧縮操作を繰り返す(

図 参照)。

8.3

符号化ブロックの構成  各符号生成器の出力は,1 個の符号化ブロックからなる(図 参照)。

圧縮ブロック

パ ッ ド ビ ッ ト

(最終データの
場合)

ト レ ー ラ

バイト 1

ト レ ー ラ

バイト 2

パッドバイト

 (00)

(バイトカウント

が奇数のとき)

図 1  符号化ブロック

符号生成器での圧縮度は,LDR のビットパターン及び同一バイトの出現頻度に依存しており,圧縮後の

ブロックの長さは,予測できない。パッドビットは,8 ビットバイトの整数倍とするために,最後に付加

し,0 を設定する。符号化ブロックは,トレーラを付加し完成する。トレーラは,2 個のトレーラバイトと

それに続くパッドバイトで構成する。

トレーラバイト 1   (FF) を設定する。

トレーラバイト 2

ビット 1∼4 LDR の最後のブロックから生成した符号化ブロックの場合,

“1100”を設定する。

他のすべての符号化ブロックの場合,

“1001”を設定する。

ビット 5

符号化のバイト数が偶数の場合,

“0”を設定する。

符号化のバイト数が奇数の場合,

“1”を設定する。

ビット 6∼8

バイトの整数倍とするために追加したパッドビット数を設定する。

パッドビットを加えた圧縮ブロックの中のバイト数が奇数の場合,バイト数を偶数にするため (00) の


3

  (ISO/IEC 12042 : 1993)

パッドバイトをトレーラバイト 2 の後に付加する。

8.4

符号列  符号列は,符号生成器の出力からなり,符号列の 1 番目は符号生成器 0 の出力,符号列の 2

番目は符号生成器 1 の出力と,この順番で生成する(

図 参照)。

8.5

テーブルペア  テーブルペアは,各符号生成器の 1 から 256 までの番号を付けた 256 個の対のテー

ブルとする。各テーブルペア (TP) の最初の数字は,符号化する入力事象の EV を示し,

“1”又は“0”の

値とする。次の数字 は,EV と等しい入力事象の出現確率を示し,

表 に示す 1,2,3,4 の値とする。

表 1  の確率の数値

K

確率

1 1

∼ 2

2 2

∼ 4

3 4

∼ 8

4 8

∼16

確率は,入力事象の値が EV と等しいことを示す(例えば,K=2 の場合,入力事象が EV と等しい確率

は,EV と等しくない確率の 2∼4 倍である。

LDR

の符号化開始時,すべての EV を“0”に設定し,すべての の値を“1”に設定する。

8.6

符号化  最初にデータは,バイト単位で検索しなければならない。バイトは,ブロックの最初のバ

イトから順番に取り出し,前のバイトと比較する。ブロックの最初のバイトは, (40) と比較する。

ランモード(8.6.2 参照)は,最初のバイトを取り出すと停止する。

検索したバイトが前のバイトと相違し,モードがランモードでない場合,そのバイトをノーマルモード

でビットごとに符号化する(8.6.1 参照)

検索したバイトが前のバイトと相違し,モードがランモードの場合,そのバイトの符号化は,8.6.2.2 

よる。

二つのバイトが等しく,モードがランモードでない場合,ランモードを作動し,そのバイトは,ノーマ

ルモードでビットごとに符号化する。

二つのバイトが等しく,モードがランモードの場合,そのバイトの符号化は,8.6.2.1 による。

8.6.1

ノーマルモード  バイトの最初(最上位)のビットを最初の TP の EV と比較し,その結果から 8.6.1.1

の二つの動作の一つを実行する。残りのビットに対してどの TP を使用するかは,そのバイトの先に符号

化したビットの内容によって決める。

各バイトの最初のビットは,常に最初の TP を使用する。

2

ビット目は,最初のビットが“0”か“1”かによって,2 番目又は 3 番目の TP を使用する。

3

ビット目は,最初の 2 ビットの情報によって 4 個の TP の 1 個を使用する。最初の 2 ビットが“00”の

場合 4 番目の TP を使用し,その他の場合は別の TP を使用する(

図 参照)。

1

バイトに 255 個の TP を用い,残り一つを固有 TP とし,ランモードだけに使用する(8.6.2 参照)

符号化は,次の 2 段階で行う。

−  ビットは,8.6.1.1 によって符号化する。

−  と EV の値は,8.6.1.2 によって更新する。

8.6.1.1

ビットの符号化  2 進数表示の二つの小数 4 けたの数値は,圧縮処理中のビット比較部で生成す

る。一つ目の数値は,現在値 (CV) と呼ぶ数値で,出力(符号化ブロック)の生成に使用する。

二つ目の数値は,区間幅と呼ぶ数値で,

“0.0000”から“1.1111”の範囲とする。

各ブロックでは,CV を“0.0000”に,区間幅を“1.0000”に初期化する。


4

  (ISO/IEC 12042 : 1993)

入力事象は,次の規則に従って二つの数値を生成する。

i)

入力事象が EV と等しい場合,

CV

は,2

K

ごとに増加する。

区間幅は,2

K

ごとに減少する。

ここで は,入力事象の出現確率とする(8.5 参照)

符号化ブロックが空文字 (NUL) でない場合,CV の小数点以上のビットは,符号化ブロックに付加

する最後のビットに論理和し,CV を“0”とする。論理和によって,最も新しい符号化ブロックが完

全なバイトの (FF) になった場合,このバイトからのけた上がりを防ぐため符号化ブロックのバイト

の最後に (0) を付加する。符号化ブロックが NUL の場合,CV の小数点以上のビットは,

“0”になる。

区間幅は,

“1.0000”と比較する。

区間幅が“1.0000”以上の場合,TP を更新し(8.6.1.2 参照)

,次のビットを符号化する。

区間幅が“1.0000”未満の場合,区間幅のビットを左へ 1 けたシフトする。最左端のビット“0”は,

落とし,最右端に“0”を詰める。CV の小数点以下の最初のけたのビットは,符号化ブロックの一部

として符号生成器の出力に付加する。CV の小数点以下の残りのビットは,左へ 1 けたシフトし,最

右端のけたに,

“0”を詰める。

最後の完全なバイトからのけた上がりを防ぐために,符号化ブロックの各バイトは完成したものと

して検索する。このバイトが (FF) の場合,符号化ブロックに (0) を付加する。

ii)

入力事象が EV と等しくない場合,

区間幅は,

“1.0000”にリセットする。

CV

の小数点以下の ビットは,けた送りし,最左端のビットから符号化ブロックに付加する。

各ビットの符号化ブロックへの付加によってバイト境界に達した場合,バイトを検査しなければな

らない。このバイトが (FF) の場合,符号化ブロックに (0) を付加する。

CV

の最右端の ビットのけたは,

“0”に設定する。

8.6.1.2

  K

及び EV の更新(図 参照)  各入力事象を EV と比較し,TP の 及び EV の値を更新する。

4

段の 2 進カウンタ(Mc カウンタ)は,各ブロックの最初で“0000”に設定し,その増加は,次による。

i)

入力事象が EV と等しい場合

K

は,

表 のとおり増加し,表中の X で示すビットは,無視する。

表 2  の増加の規則

K

の現行値

カウンタの状態

K

の新しい値

1 XX11  2

2 X111  3

3 1111  4

4 XXXX  4

カウンタが表中以外の状態では,は,変えてはならない。

カウンタは,一つずつ増加する。カウンタの値が“1111”で一つ増加するとき,カウンタの値は,

“0000”とする。

EV

は,変えてはならない。

ii)

入力事象が EV と等しくない場合

K

が 1 を超える場合:

K

の値は,一つずつ減少する。

カウンタは,増加してはならない。


5

  (ISO/IEC 12042 : 1993)

EV

は,変えてはならない。

K

が 1 の場合:

K

の値は,変えてはならない。

カウンタは,増加してはならない。

EV

は,反転する。

8.6.2

ランモード  ランモードは,符号化した最後の二つのバイトが等しい場合,動作を開始する。

8.6.2.1

現在のバイトが,最後の二つのバイトと等しい場合,固有 TP を使用し,EV を“1”と比較する。

区間幅,CV,及び EV の値は,8.6.1.1 及び 8.6.1.2 によって更新し,拡張した符号化ブロックとしてもよ

い。

8.6.2.2

現在のバイトが,最後の二つのバイトと相違している場合,固有 TP を使用し,EV を“0”と比

較する。区間幅,CV,及び EV の値は,8.6.1.1 及び 8.6.1.2 によって更新し,拡張した符号化ブロックと

してもよい。

バイトはノーマルモードで符号化し,区間幅,CV,及び EV の値は,8.6.1.1 及び 8.6.1.2 によって更新

し,拡張した符号化ブロックとしてもよい。ランモードは無効とする。

8.7

ブロックの符号化の完了  ランモードでブロックの最後のバイトを符号化したとき,ノーマルモー

ドで符号化するバイトが残っている場合,動作は,8.6.2.2 による。

この動作中のとき又はランモードでないとき符号生成器は,次の手順でクリアする。

CV

の小数点以下の 4 ビットは,最左端のビットから符号化ブロックに付加する。各ビットの符号化ブ

ロックへの付加によってバイト境界に達した場合,完成したバイトを検査しなければならない。このバイ

トが (FF) の場合,符号化ブロックに (0) を付加する。CV の残りのビットは,符号化ブロックへ付加す

る。パッドビット及びトレーラは,8.3 によって符号化ブロックに付加する。


6

  (ISO/IEC 12042 : 1993)

図 2  符号化の順序


7

  (ISO/IEC 12042 : 1993)

図 3  テーブルペアの選択


8

  (ISO/IEC 12042 : 1993)

図 4  の決定


9

  (ISO/IEC 12042 : 1993)

附属書 A(参考)  進算術符号化アルゴリズムの例

A.1

序  この附属書 は,2 進算術符号化アルゴリズムについて記述する。この記述は,構造化英語の表

現であり,疑似符号としても知られている。アルゴリズムについての全般的な理解を意図し,この規格の

特定の表現方法を正確に説明するものではない。

データレコードの圧縮は,数段階の連続した処理を必要とする。この例では,9 個に分割された処理を

規定し,相互にコールで連結している。特定な処理が別処理の動作の完了を必要とする場合,コール処理

で呼び出す。コールは,英大文字で書き表したコール処理によって示す。

疑似符号は,IF,THEN,ELSE SET,SET,DO WHILE などの基本演算子を使用する。CASE 文は,例

外で IF,THEN 及び ELSE 文を置き換えるために使用する。字下げは,演算子を関係づけることに使用す

る。例えば,IF 操作が与えられた IF,THEN 及び ELSE 演算子は,同じ間隔ですべて字下げする。

A.2

処理の概要

A.2.1

コンパクト  コンパクトは,LDR を 512 バイト以下のブロックに分割し,8 個の符号生成器に順番

に入力する。ブロックは,符号化し符号列と呼ばれる出力を形成するために連結する。

A.2.2

ブロックの符号化  この処理は,個々のブロックを実際に符号化し,符号化に必要な区間幅及び CV

を生成する。CV は,符号化出力の生成に使用し,区間幅は,圧縮の達成水準を制御する。圧縮は,バイ

ト内の次のビットの出現確率を,LDR の前の内容をもとに予測することによって達成する。この予測が正

しく,かつ,予測の確率が高いとき,区間幅はほとんど変化しない。符号化ブロックへの加算は,1 ビッ

ト又は一つもない。予測が正しくない場合,符号化ブロックへの加算は,1 から 4 ビットとする。

データに反復性があるとき,予測と実際のデータとが一致することが多くなり,圧縮率は高くなる。

他の操作も同じ動作になる。現在のバイトが前の二つのバイトと等しいとき,すべてのバイトをランモ

ードで一度に処理する。固有 TP を使用し,予測は,

“1”と比較する。区間幅及び CV は,個々のビット

圧縮のために同じ方法で更新する。

A.2.3

演算  演算は,検索するビットが予測値と一致するとき,区間幅及び CV の変化量を決定する。

A.2.4

ビットの符号化  個々のビット処理手順を記述する。

A.2.5

検索  検索処理は,CV から符号化ブロックへのデータを移動するために用いる。この方法は,2 種

類あり,一つは,CV の小数点以上の値を符号化ブロックに論理和する方法である。けた上がりを引き起

こす可能性があるので,符号化ブロックがけた上がりで変化しないよう工夫する。最近に完成した符号化

ブロックのバイトを検索する。そのバイトが (FF) の場合,このバイトの後に 4 個のビット“0”を付加す

る。CV の小数点以上に数値を論理和することによって生じたけた上がりは, (0) にすることによって他

への波及を防ぐ。

二つ目は,CV の小数点以下から符号化ブロックへ一つ以上のビットを付加し,データを移動する方法

である。加算するビット数は,処理するビットが予測と一致するか,又は一致しないかの確率によって決

まる。符号化ブロックにビットを加算するので,符号化ブロックのバイトが (FF) になると, (0) を付加

し,けた上がりによる符号化ブロックへの波及を防ぐ。


10

  (ISO/IEC 12042 : 1993)

A.2.6

テーブルペアの更新  予測及び確率の更新について規定する。CASE 文は,IF 文の連続として読み

取ることができる。条件部の条件が一致するまで,又は CASE 文の終わりまで検索する。条件が一致する

場合,確率は,条件部の条件内容を設定する。

A.2.7

次のテーブルペア  バイト中の次のビットにどの TP を使用するかを決める。最初の TP は,常に各

バイトの最初のビットに用いる。2 番目又は 3 番目の TP は,2 番目のビットに用い,どちらの TP を使用

するかは最初のビットが“0”か“1”による。同じように,バイトのすべての前に処理されたビットの内

容に基づき,各ビットに適切な TP を使用する。

A.2.8

符号生成器のクリア  完全にブロック処理を終えたとき,符号化が終了する。ランモードが動作中

の場合,固有 TP の予測は,ランモードを収束するために使用する。

ランモードが非動作,又はランモードが収束している場合,CV の小数点以下の 4 ビットを符号化ブロ

ックに加算する。再度符号化ブロックのバイトが (FF) かを検査し,バイト境界に到達するまで符号化ブ

ロックに (0) を付加する。

A.2.9

トレーラ  最終処理として (FF) と情報トレーラバイトとで構成したトレーラを付加する。完全な符

号化ブロック中のバイトの合計数を偶数にするため,パッドバイト (0) を付加する場合もある。

A.3

疑似符号の処理の概要

A.3.1

コンパクト  コンパクトは,LDR のブロック化,及び各ブロックを適切な符号器で符号化する処理

を記述する。

PROCESS 

 COMPACT

RECEIVE Logical_Data_Record

RESET Code_String

SET Encoder_Number

=0

SET

256 Table_Pairs (1 : 256) to {0, 1} in each of 8 Tables (0 : 7)

IF logical_Data_Record

>512 bytes

THEN

ROUTE

first 512 byte block from the Logical_Data_Record to Encoder 0 and

BLOCK_ENCODE

A.3.2 参照)using Table 0. The Code_Block (output of Encoder)

is the first portion of the Code_String (compressor output) .

 DO 

WHILE

remainder of Logical_Data_Record is

>512bytes

  

SET Encoder_Number

=Encoder_Number+1

  

IF Encoder_Number

is

≦7

  

THEN 

ROUTE

next 512-byte block to Encoder (Encoder Number) and

BLOCK_ENCODE using Table (Encoder_Number) .

  

ELSE

SET Encoder_Number

=0

  

ROUTE

next 512-byte block to Encoder 0 and

BLOCK_ENCODE using Table 0.

  

APPEND

Code_Block to Code_String

 END 

DO

 SET Encoder_Number

=Encoder_Number+1

 IF Encoder_Number

is

≦7


11

  (ISO/IEC 12042 : 1993)

 THEN

ROUTE

remainder of Logical_Data_Record to Encoder (Encoder_Number) and

BLOCK_ ENCODE using Table (Encoder_Number)

 ELSE

SET

Encoder_Number

=0

  

ROUTE   remainder of Logical_Data_Record to Encoder 0 and BLOCK_

ENCODE using Table 0.

 APPEND

Code_Block to Code_String

ELSE

ROUTE

Logical_Data_Record to Encoder 0 and BLOCK_ENCODE using Table 0.

Code_Block (output of Encoder) is the Code_String (compressor output)

END PROCESS

COMPACT

A.3.2

ブロックの符号化  この処理は,512 バイト以下のブロックを符号化ブロックへ変換する。符号化ブ

ロックは,トレーラで終了する。

PROCESS

BLOCK_ENCODE

SET

Width

=1,0000

SET

Current_Value (CV)

=0,0000

SET

Previous_Byte

=(40)

SET

Run_Mode

=0

SET

Mc_Count

=0000

SET

Block_Bytes_Remaining

=number of bytes in block

SET   Byte_Number

=1

DO WHILE   Block_Bytes_Remaining

>0

 SET

Current_Byte

=byte (Byte_Number) of block

 SET

Byte_Number

=Byte_Number+1

 SET

Block_Bytes_Remaining

=Block_Bytes_Remaining−1

 IF

Current_Byte

=Previous_Byte

 THEN 

  IF

Run_Mode

=1

  

THEN 

  IF

first value of Unique_Table_Pair

=1

  

THEN COMPUTE

A.3.3 参照)

  

ELSE 

SET   Width

=1,0000

  

SET   Compare

=false

  

SET   Shift_Left

=second value in Unique_Table_Pair

  

CHECK

  

TABLE_PAIRS_UPDATE

  

ELSE 

  BIT_ENCODE

A.3.4 参照)

  

SET

Run_Mode

=1

 ELSE 

SET

Previous_Byte

=Current_Byte

  

IF

Run_Mode

=1

  

THEN 

IF    first value of Unique_Table_Pair

=0

  

THEN 

COMPUTE


12

  (ISO/IEC 12042 : 1993)

  

ELSE 

SET Width

=1,0000

  

SET Compare

=false

  

SET Shift_Left

=second value of Unique_Table_Pair

  

CHECK

  

TABLE_PAIRS_UPDATE

  

SET

Run_Mode

=0

  

ELSE

continue

  

BIT_ENCODE

END DO

CLEAR_ENCODER

A.3.8 参照)

END PROCESS

BLOCK_ENCODE

A.3.3

演算  CV に加算する補正値と,区間幅から減算する値を演算し,CV の符号化ブロックへのけた送

り量を決定する。

PROCESS

COMPUTE

SET

Width

=Width−(2 raised to negative power of second value in Table_Pair (Number))

SET

CV

=CV+  (2 raised to negative power of second value in Table_Pair(number))

SET

Compare

=true

IF   Width

<1,0000

THEN  

SHIFT

Width left one place

 APPEND 

  zero to rightmost end of Width

 SET

Shift_Left

=1

ELSE  

SET

Shift_Left

=0

CHECK

A.3.5 参照)

TABLE_PAIRS_UPDATE

A.3.6 参照)

END PHOCESS

COMPUTE

A.3.4

ビットの符号化  符号生成器がランモードでない場合,ブロックバイトをビット単位で符号化する。

PROCESS

BIT_ENCODE

  SET  Number=1

  SET  Bit_Count=1

  DO WHILE

Bit_Count

<9

 IF

bit (Bit_Count) of Current_Byte

=first value in Table_Pair (Number)

 THEN 

COMPUTE

  NEXT_TABLE_PAIRA.3.7 参照)

 ELSE 

SET

Width

=1,0000

   SET

Shift_Left

=second value in Table_Pair (Number)

   SET

Compare

=false


13

  (ISO/IEC 12042 : 1993)

   CHECK

   TABLE_PAIRS_UPDATE

   NEXT_TABLE_PAIR

 SET

Bit_Count

=Bit_ Count+1

  END DO

END PROCESS

BIT_ENCODE

A.3.5

検索  CV を検査し,適切なデータを符号化ブロックに付加する。

PROCESS

CHECK

IF

Code_Block

=null

THEN   continue

ELSE  

SET

Count

=0

 ADD

bit (Count) of CV to rightmost end of Code_Block

 SET 

bit (Count) of CV to 0

IF  

Rightmost integral 8 bits of Code_Bloek

=(FF)

THEN  

INSERT (0) after last integral 8 bits Code_Block

ELSE

continue

SET

Count

=Count+1

DO WHILE

  Shift_Left>0

 APPEND

bit (Count) of CV to rightmost end of Code_Block

 SET

bit (Count) of CV to 0

SHIFT

CV left one palce

 APPEND

ZERO to rightmost end of CV

 SET

Shift_Left

=Shift_Left−1

 IF

Code_Block

=integral multiple of 8 bits

 THEN 

IF

rightmost integral 8 bits of Code_Block

=(FF)

  

THEN 

APPEND 0000 to Code_Block

  

ELSE

continue

 ELSE

continue

END DO

END PROCESS

CHECK

A.3.6

テーブルペア更新  テーブルペアを正しい値に更新する。Mc カウンタは,カウンタ値が,“1111”

のとき,1 を加算すると“0000”になる。

PROCESS

TABLE_PAIRS_UPDATE

IF   Compare

=true

THEN  

CASE

  second value of Table_Pair (Number) AND Mc_Count

[second value of Table_Pair (Number)

=1 AND Mc_Count (3 : 4)=11]


14

  (ISO/IEC 12042 : 1993)

second value of Table_Pair (Number)

=2

[second value of Table_Pair (Number)

=2 AND Mc_Count (2 : 4)=111]

second value of Table_Pair (Number)

=3

[second value of Table_Pair (Number)

=3 AND Mc_Count (1 : 4)=1111]

second value of Table_Pair (Number)

=4

 END 

CASE

 SET

Mc_Count

=Mc_Count+1

ELSE  

IF

second value of Table_Pair (Number)

>1

 THEN 

  second value of Table_Pair (Number)

=second value of Table_Pair (Number)−1

 ELSE

invert first value of Table Pair (Number)

END PROCESS

TABLE_PAIRS_UPDATE

A.3.7

次のテーブルペア  符号化処理に使用する次のテーブルペアを決める。

PROCESS

NEXT_TABLE_PAIR

IF

Bit_Count

<8

THEN  

IF

bit (Bit_Count) of Current_Byte

=1

 THEN

Number

=Twice Number+1

 ELSE 

 Number

=Twice Number

ELSE  

SET

Number

=1

END PROCESS

NEXT_TABLE_PAIR

A.3.8

符号生成器のクリア  符号生成器をブロックの符号化終了ごとにクリアする。

PROCESS

CLEAR_ENCODER

SET

Zero_Count

=(00)

IF   Run_Mode

=1

THEN    IF

first value of Unique_Table_Pair

=0

 THEN 

COMPUTE

 ELSE 

SET

Width

=1,0000

  

SET

Compare

=false

  

SET

Shift_Left

=second value in Table_Pair (Number)

  

CHECK

  

TABLE_PAIRS_UPDATE

ELSE   continue

SET

Shift_Left

=4

CHECK

IF

Code_Block

=integral multiple of 8 bits

THEN    TRAILER

A.3.9 参照)

ELSE    DO WHILE

Code_Block

≠  integral multiple of 8 bits


15

  (ISO/IEC 12042 : 1993)

  APPEND

0 to Code_Block

  SET

Zero_Count

=Zero_Count+1

 END 

DO

 TRAILER

END PROCESS

CLEAR_ENCODER

A.3.9

トレーラ  復元時に使用するためトレーラは,各符号化ブロックに付加する。

PROCESS

TRAILER

SET

Trailer_Byte

=(00)

IF

Number of bytes in Code_Block is odd

THEN  

SET

Trailer_Byte, bit 5

=1

ELSE  

SET

Trailer_Byte, bit 5

=0

APPEND

(FF) Code_Block

SET

Trailer_Byte, bits 6 : 8 to Zero_Count

IF

Block is last block in Logical_Data_Record

THEN  

SET

Trailer_byte, bits 1 : 4 to 1100

ELSE  

SET

Trailer_byte, bits 1 : 4 to 1001

APPEND

Trailer_Byte to Code_Block

IF

Trailer_Byte, bit 5

=1

THEN  

APPEND    (00) to Code_Block

ELSE

Continue

END PROCESS

TRAILER


16

  (ISO/IEC 12042 : 1993)

JIS

磁気テープ原案作成委員会  構成表

(敬称略,順不同)

氏名

所属

(委員長)

大  石  完  一

パルステック工業株式会社

(幹事)

富  田  正  典

日本システムインテグレーション株式会社

(幹事)

徳  永  賢  次

住友スリーエム株式会社

金  子      悟

富士通株式会社

竹  内      正

株式会社トリム・アソシエイツ

平  川      卓

富士写真フイルム株式会社

新  井      清

日本システムハウス株式会社

今  井  伸  二

日本電気株式会社

安  藤  晴  夫

日本マクセル株式会社

樋  口  重  光

株式会社日立製作所

堀  川  憲  一

ソニー株式会社

荒  木      学

日本ユニシス株式会社

岸  野  忠  信

財団法人日本規格協会

永  松  荘  一

通商産業省機械情報産業局

藤  井  隆  宏

通商産業省工業技術院

兼  谷  明  男

通商産業省工業技術院

(関係者)

佐々木  修  二

財団法人日本電子部品信頼性センター

(事務局)

東  條  喜  義

社団法人日本電子工業振興協会

内  山  誠  作

社団法人日本電子工業振興協会