JPH06309143A - データ圧縮装置及び方法 - Google Patents

データ圧縮装置及び方法

Info

Publication number
JPH06309143A
JPH06309143A JP29962593A JP29962593A JPH06309143A JP H06309143 A JPH06309143 A JP H06309143A JP 29962593 A JP29962593 A JP 29962593A JP 29962593 A JP29962593 A JP 29962593A JP H06309143 A JPH06309143 A JP H06309143A
Authority
JP
Japan
Prior art keywords
data
bit
difference
compression
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP29962593A
Other languages
English (en)
Inventor
Kenichi Nogami
謙一 野上
Yukio Nakamoto
幸夫 中本
Isamu Iwai
勇 岩井
Motoi Kurihara
基 栗原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Computer Engineering Corp
Original Assignee
Toshiba Corp
Toshiba Computer Engineering Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Computer Engineering Corp filed Critical Toshiba Corp
Priority to JP29962593A priority Critical patent/JPH06309143A/ja
Publication of JPH06309143A publication Critical patent/JPH06309143A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【目的】本発明は、2進数のビット列で取り扱われる大
容量のデータに対して効果的にデータ量を小さくする圧
縮を行ない、記憶装置を有効的に利用すると共に、デー
タの取扱いを容易にすることを可能にする。 【構成】2進数のビット列で取り扱われるデータについ
て、ビット「0」あるいはビット「1」の何れか一方を
固定ビットとして設定し、ビット列の各ビットが固定ビ
ットであるか否かを判別するビット判別部204と、ビ
ット列について、ビット判別部204によって固定ビッ
トと判別されたビット位置から、次に固定ビットが出現
するビット位置までのビットの差分数を計数するビット
差分カウント部205と、計数された差分数を、その差
分数を最小のバイト数で表現する形式のデータに変換す
る最適バイト数判別部206とを具備し、ビット列を固
定ビットに基づく差分を用いてデータ変換することを特
徴とする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、2進数のビット列で取
り扱われるデータを圧縮するデータ圧縮装置及び方法に
関する。
【0002】
【従来の技術】一般に、2進数のビット列で取り扱われ
るデータのデータ量が大規模になるにつれて、記憶装置
内におけるデータの占有量が増加し、データの取扱いが
困難になり、また取扱いの時間が多くかかってしまうと
いう問題がある。この問題に対して、データが持つ情報
量を減少させることなくデータ量を小さくするために、
データの圧縮を行なうデータ圧縮方式が利用されてい
る。
【0003】従来のデータ圧縮方式は、2進数のビット
列で取り扱われる各種データ用となっている。すなわ
ち、各種データ用となっているため、平均的にデータの
圧縮率が良くなるような方式となっている。このため、
従来の圧縮方式では、あまり効果の得ることの出来ない
データが存在することがあった。
【0004】また、従来のデータ圧縮方式は、圧縮の対
象とするデータを一括して圧縮しているため、データを
取り扱うためには圧縮データ全体を圧縮前のデータに戻
す必要がある。すなわち、記憶装置内でのデータ占有量
は小さくなるが、データの取り扱いについては、圧縮デ
ータ全体を圧縮前のデータに戻してから扱うため、結局
は大容量のデータを扱うことになる。
【0005】
【発明が解決しようとする課題】このように従来のデー
タ圧縮方式では、2進数のビット列で取り扱われるデー
タに対して圧縮を行なったとしても、データの内容によ
っては、十分な効果が得られずに、記憶装置の占有量が
大きい、データの取扱いが困難、及びデータの取扱いに
時間がかかるという問題を回避できない場合があった。
【0006】また、データを扱うためには、圧縮データ
全体を圧縮前のデータに戻す必要があるため、データの
取扱いが困難、データの取扱いに時間がかかるという問
題があった。
【0007】本発明は前記のような点を考慮してなされ
たもので、従来のデータ圧縮方式では十分に圧縮できな
かった2進数のビット列で取り扱われる大容量のデータ
に対して効果的にデータ量を小さくする圧縮を行ない、
記憶装置を有効的に利用すると共に、データの取扱いを
容易にすることが可能なデータ圧縮装置及び方法を提供
することを目的とする。
【0008】
【課題を解決するための手段】本発明は、2進数のビッ
ト列で取り扱われるデータについて、ビット「0」ある
いはビット「1」の何れか一方を固定ビットとして設定
し、前記ビット列の各ビットが前記固定ビットであるか
否かを判別するビット判別手段と、前記ビット列につい
て、前記ビット判別手段によって前記固定ビットと判別
されたビット位置から、次に前記固定ビットが出現する
ビット位置までのビットの差分数を計数するビット差分
計数手段と、前記ビット差分計数手段によって計数され
た差分数を、その差分数が最小のバイト数で表現される
形式のデータに変換する最適バイト数判別変換手段とを
具備し、前記ビット列を前記固定ビットに基づく差分を
用いてデータ変換することを特徴とする。
【0009】また本発明は、2進数のビット列で取り扱
われているデータにおいて、ビット「0」あるいはビッ
ト「1」の何れか一方のビットを固定ビットとして設定
し、前記ビット列のデータの先頭ビットを起点として、
この起点から順次、前記固定ビットの第N+1ビットが
出現するまでのビット数の差分をN番目のデータとして
表現するようなデータ形式に変換し、固定ビットが出現
するまでのビット数の差分を用いて元のデータを表現す
ることを特徴とする。
【0010】また、前記固定ビットの第Nビットから第
N+1ビットが出現するまでのビット数の差分を、その
差分を表現できる最小のバイト数で表現するデータ形式
に変換することを特徴とする。
【0011】また本発明は、M個(M≧1)のブロック
に分けられた2進数のビット列で取り扱われるデータに
ついて、1つのブロックのデータ中でビット「0」ある
いはビット「1」の何れか一方を固定ビットとして設定
し、前記ビット列の各ビットが前記固定ビットであるか
否かを判別するビット判別手段と、前記ビット列につい
て、前記ビット判別手段によって前記固定ビットと判別
されたビット位置から、次に前記固定ビットが出現する
ビット位置までのビットの差分数を計数するビット差分
計数手段と、前記ビット差分計数手段によって計数され
た差分数を、その差分数が最小のバイト数で表現される
形式のデータに変換する最適バイト数判別変換手段と、
前記最適バイト数判別変換手段の変換によって得られた
データのデータ量と変換前の元データのデータ量とを比
較してデータ量が少ないデータを選択する圧縮判別手段
と、前記圧縮判別手段によって選択されたデータを保存
するデータ保存手段とを具備し、前記ビット列を前記固
定ビットに基づく差分を用いてデータ変換することによ
って得られたデータ、または変換前の元データのデータ
量の少ない何れか一方を、各ブロック単位で保存するこ
とを特徴とする。
【0012】また、前記データ保存手段によって保存さ
れるデータに対応して、前記ブロック毎に、ブロック内
の元データのデータ量、前記元データに対する処理の結
果、前記圧縮判別手段に何れが選択されたかを示す情
報、及び前記圧縮判別手段によって選択されたデータの
データ量を含むテーブルを保存することを特徴とする。
さらに、前記テーブルをもとに、前記データ保存手段に
よって保存されたデータ変換されたデータを、ブロック
単位で元のデータに戻すことを特徴とする。
【0013】
【作用】このような構成によれば、データの圧縮の方式
は、データのビット列において「0」あるいは「1」の
何れかのビットの一つを固定し、その固定した同一ビッ
トが出現するまでのビットの差分数を用いて表現する。
差分数は最小バイト数で表現する。このことにより、ユ
ーザが作成したデータを効率よく小規模に変換し、記憶
装置を有効的に利用することができる。また、ユーザに
よるデータの取扱いが容易にできる。
【0014】また、構造的にブロックに分けられたデー
タのビット列について、ブロック単位でデータを変換す
る。その際に、変換して得られたデータが、元のデータ
よりもデータ量が大きくなった場合には、元のデータを
保存することにより、より効率的に全体のデータ量を小
規模にすることができる。
【0015】また、保存されたデータのデータ構造をブ
ロック単位で保存しておくことにより、変換によって圧
縮されたデータをブロック単位で元のデータに戻すこと
ができ、データの取扱いが容易となる。
【0016】
【実施例】以下、図面を参照して本発明の実施例を説明
する。図1は本発明の第1実施例におけるデータ圧縮装
置を実現する装置の概略構成を示すブロック図である。
図1に示すように、制御装置1、及び外部記憶装置2か
ら構成されている。制御装置1は、CPU、メモリ等か
ら構成されており、後述するデータ圧縮装置20を実現
する。外部記憶装置2は、制御装置1で扱われる各種デ
ータを格納するためのものである。
【0017】制御装置1は、図2に示すデータ圧縮装置
20を実現している。データ圧縮装置20は、処理部2
2、及びバッファ部24によって構成されている。処理
部22は、初期化部201、データ読み込み部202、
データ保存部203、ビット判別部204、ビット差分
カウント部205、最適バイト数判別部206、及びバ
ッファクリア部207によって構成されている。バッフ
ァ部24は、データ格納バッファ220、圧縮データ格
納バッファ221、差分格納バッファ222、データ量
格納バッファ223、元データ量格納バッファ224、
及び作業バッファ225の各バッファから構成されてい
る。
【0018】初期化部201は、データ圧縮処理の開始
前に、バッファ部24内の各バッファの初期化を行な
う。データ読み込み部202は、外部記憶装置2に格納
された圧縮前の圧縮対象となるデータを読み込み、バッ
ファ部24内のデータ格納バッファ220へ格納する。
【0019】データ保存部203は、圧縮データ格納バ
ッファ221に格納されている圧縮されたデータを外部
記憶装置2へ書き込むものである。ビット判別部204
は、圧縮対象データにおける、現在調べているビットが
「0」か「1」かの判別を行なうものである。
【0020】ビット差分カウント部205は、ビット判
別部204による判別結果を用いて、固定したビット
(「0」または「1」)と同一のビットが出現するまで
のビット数のカウントを行い、カウントを行なったビッ
ト数を差分格納バッファ222へ格納する。
【0021】最適バイト数判別部206は、差分格納バ
ッファ222に格納されている差分のビット数を表現で
きる最小のバイト数に変換を行い、圧縮データ格納バッ
ファ221への格納を行なう。
【0022】バッファクリア部207は、ビット差分カ
ウント部205によりカウントが開始される前に、差分
格納バッファ222をクリアするものである。データ格
納バッファ220は、データ読み込み部202から読み
込まれた圧縮の対象とするデータを格納するためのもの
である。圧縮データ格納バッファ221は、所定のデー
タ形式で圧縮された圧縮済みのデータを格納するための
ものである。差分格納バッファ222は、基準となるビ
ット(第1実施例では「1」から)が出現してから次の
同じビットが出現するまでのビット数(差分)をカウン
トするためのものである。データ量格納バッファ223
は、圧縮データのデータ量を格納するためのものであ
る。元データ量格納バッファ224は、データ格納バッ
ファ220に格納された圧縮対象とするデータのデータ
量を格納するためのものである。作業バッファ225
は、ビット判別部204によるビット判別の処理対象と
する1バイトのデータを格納するためのものである。
【0023】次に、第1実施例の動作について、図3に
示すフローチャートを参照しながら説明する。第1実施
例では、圧縮対象データに対して、「1」のビットが出
現してから次の「1」が出現するまでの差分(ビット
「0」が連続する数)に基づいて、データ圧縮を行なう
例を用いて説明する。この場合、ビット「1」の出現頻
度が少ないデータに有効となる。
【0024】この種、データとしては、大量の文書が格
納されたデータベース中から、単語をキーとして所望す
る文書を検索する際に用いられる検索用インデックスデ
ータがある。例えば、検索用インデックスデータは、デ
ータベース登録の際に文書と共に登録される1つ以上の
検索用単語について、単語毎に同単語を検索キーとする
文書が何れであるのかを、各ビット1文書に対応させて
登録している。すなわち、検索用インデックスデータ
は、全ての単語毎に全文書について登録の有無(ある単
語が検索キーとして登録されている場合には、対応する
文書に当たるビットが「1」となる)が設定されるの
で、全インデックスデータからするとビット「1」の出
現頻度が少ない。しかも、各ビットはそれぞれ意味があ
るので、削除できないデータとなっている。本願発明に
よるデータ圧縮は、この種、2進数のビット列で取り扱
われているデータに有効である。
【0025】まず、初期化部201は、バッファ部24
中の各バッファを初期化する(ステップS1)。データ
読み込み部202は、外部記憶装置2に格納されている
圧縮対象データを読み込み、データ格納バッファ220
に格納する(ステップS2)。
【0026】例として、「10000000 0〜0
00100000」(総バイト数100バイトで1ビッ
ト目と795ビット目に「1」がある)というデータが
読み込まれ、データ格納バッファ220に格納されたも
のとする。
【0027】また、データ読み込み部202は、データ
格納バッファ220に格納されているデータのデータ量
を元データ量格納バッファ226に格納する(ステップ
S3)。(例では「100」という数値データが格納さ
れる)。
【0028】ビット判別部204は、データ格納バッフ
ァ220に格納されているデータの先頭から順に1バイ
ト(8ビット)ずつ作業バッファ225に格納し(ステ
ップS4)、(例では「10000000」が格納され
る)、先頭ビットが「1」か「0」かの判別を行なう
(ステップS5)。
【0029】ここで、ビット判別部204により先頭ビ
ットが「1」と判別された場合(はじめに第1バイトの
1ビット目)、最適バイト数判別部206が起動し、差
分格納バッファ222に格納されている差分数(1ビッ
ト目の場合、差分格納バッファ222に格納されている
差分数は「0」)に1を加える(ステップS6)。
【0030】また、最適バイト数判別部206は、その
差分数の値を表現するのに必要な最小のバイト数を判別
し(ステップS7)、そのバイト数で後述する所定の圧
縮データの形式に差分数を変換し(1ビット目について
は1バイトの圧縮データとなる)、圧縮データ格納バッ
ファ221に格納する(ステップS8,S9)。また、
最適バイト数判別部206は、圧縮データのバイト数
を、データ量格納バッファ223に格納されている値
(初期値は0)に加える(ステップS10)。
【0031】ここで、バッファクリア部207は、差分
格納バッファ222をクリアし、次ビットの処理に備え
る(ステップS11)。ビット判別部204は、データ
を1ビット左にシフトし、判別対象とするビットを次の
ビットに変更する(ステップS12)。
【0032】ビット判別部204は、作業バッファ22
5中の1バイト分の全ビットに対してビット判別を行な
ったかどうか判定する(ステップS13)。全ビットに
対してビット判別を行なっていないならばステップS5
に戻る。
【0033】処理が2ビット目に移ると、ステップS5
において、ビット判別部204は、先頭ビットが「0」
と判別する。ビット差分カウント部205は、差分格納
バッファ222に格納されている差分数(初期値は0)
に1を加え(ステップS14)、差分格納バッファ22
2に再格納を行なう。
【0034】2ビット目以降、圧縮対象データは、図4
(a)に示すように、793個の「0」が連続してい
る。従って、全バイトに対してビット判別を行なったか
どうか判定しながら(ステップS15)、ステップS1
2,S13,S5,S14の処理を繰り返した結果、次
のビット「1」が出現するまでに(第100バイトの5
ビット目)、差分格納バッファ222には、図4(b)
に示すように「794」が差分数として格納される。
【0035】最適バイト数判別部206は、差分数の値
「794」を表現するのに必要な最小のバイト数を判別
する(ステップS7)。この場合、図4(c)に示すよ
うに、2バイトで表現することができる。そして、最適
バイト数判別部206は、図4(d)に示すような、所
定の圧縮データの形式に差分数を変換する(ステップS
8,S9)。
【0036】この変換では何バイトに変換されたかが判
別できるように、圧縮データの各バイトの先頭ビットを
フラグとして用い、残りの7ビットで差分数を表現す
る。バイトの先頭ビットが「1」のときは、そのバイト
が差分を表現しているバイトの先頭を表し、先頭ビット
が「0」の時は前のバイトから連続していることを表す
ものとする。従って、圧縮データの1バイトは7ビット
で表現できる数、2バイトは14ビットで表現できる
数、以下7ビットずつ増加するビット数で、差分数を表
現することが可能である。
【0037】この結果、図4(a)の例では、1ビット
目の「1」は「10000001」という1バイトの圧
縮データ、次のビット「1」が出現するまでの差分数
「794」は、図4(d)に示すように、「10000
11000011010」という2バイトの圧縮データ
に変換される。
【0038】このとき、最適バイト数判別部206は、
データ量格納バッファ223に格納されているバイト数
に変換されたバイト数を加え、再びデータ量格納バッフ
ァ223に格納する(ステップ308)。
【0039】最適バイト数判別部206は、データ量格
納バッファ223に格納されている「1」(第1ビット
についての圧縮データのバイト数)に、連続するビット
「0」に関する圧縮データのバイト数「2」を加えて、
データ量格納バッファ223に再格納する(圧縮データ
バイト数「3」)。この結果、第795ビットまでのデ
ータに関する圧縮データは、図5に示すようになる。
【0040】前述のようにして圧縮データを生成し、全
バイトについての処理が終了すると、データ保存部20
3は、図6に示すようなデータ形式、すなわちデータ量
格納バッファ223に格納された圧縮データバイト数、
元データ量格納バッファ224に格納された元データバ
イト数、及び圧縮データ格納バッファ221に格納され
た圧縮データを、外部記憶装置2に格納する。
【0041】外部記憶装置2に格納された圧縮データ
は、各バイトの内容に基づいて展開することにより、元
のデータに伸張することができる。このようにして、2
進数のビット列で取り扱われているデータにおいて、例
えばビット「1」を固定し、次のビット「1」が出現す
るまでのビットの差分数を、最小のバイト数で表現でき
る形式の圧縮データとするので、ビット「1]の出現頻
度が少ないデータについて、非常に良好な圧縮率でデー
タ圧縮を行なうことができる。
【0042】なお、第1実施例においては、ビット
「1」の出現頻度が少ないデータを例にして説明した
が、ビット「0」の出現頻度が少ないデータにも応用で
きる。すなわち、差分数を求めるための基準ビットを
「0」とするか、あるいは圧縮対象データの全てのビッ
トを反転させ、第1実施例と同様の処理を実行すること
で、同一の圧縮率による圧縮が可能となる。
【0043】また、本発明は文書データベース用の検索
用インデックスデータの場合に限らず、ビット変化が少
なく、かつ各ビットに削除できない情報を持つデータに
対して有効に実現することができる。
【0044】次に、第2実施例について説明する。図7
は本発明の第1実施例におけるデータ圧縮装置を実現す
る装置の概略構成を示すブロック図である。図7に示す
ように、制御装置5、外部記憶装置6、及び入力装置7
から構成されている。制御装置5は、CPU、メモリ等
から構成されており、後述するデータ圧縮装置50を実
現する。外部記憶装置6は、制御装置5で扱われる各種
データを格納するためのものである。入力装置7は、制
御装置5で扱われる各種データを入力するためのもので
あり、キーボード、マウス等により構成される。
【0045】制御装置5は、図8に示すデータ圧縮装置
50を実現している。データ圧縮装置50は、制御部5
1、処理部52、及びバッファ部54によって構成され
ている。図9にはデータ圧縮装置50の詳細な構成を示
している。
【0046】処理部52は、初期化部501、データ読
み込み部502、データ保存部503、ビット判別部5
04、ビット差分カウント部505、最適バイト数判別
部506、バッファクリア部507、圧縮判別部50
8、及びループ判別部509によって構成されている。
【0047】バッファ部54は、データ格納バッファ5
20、圧縮データ格納バッファ521、差分格納バッフ
ァ522、データ量格納バッファ523、元データ量格
納バッファ524、処理データ格納バッファ525、フ
ラグ格納バッファ526、ブロック数格納バッファ52
7、及びループカウントバッファ528の各バッファか
ら構成されている。
【0048】初期化部501は、データ圧縮処理の開始
前に、バッファ部54内の各バッファの初期化を行な
う。データ読み込み部502は、外部記憶装置6に格納
された圧縮前の圧縮対象となるデータを読み込み、バッ
ファ部54内のデータ格納バッファ520へ格納する。
【0049】データ保存部503は、圧縮データ格納バ
ッファ521に格納されている圧縮されたデータを外部
記憶装置6へ書き込むものである。ビット判別部504
は、圧縮対象データにおける、現在調べているビットが
「0」か「1」かの判別を行なうものである。
【0050】ビット差分カウント部505は、ビット判
別部504による判別結果を用いて、固定したビット
(「0」または「1」)と同一のビットが出現するまで
のビット数のカウントを行い、カウントを行なったビッ
ト数を差分格納バッファ522へ格納する。
【0051】最適バイト数判別部506は、差分格納バ
ッファ522に格納されている差分のビット数を、表現
できる最小のバイト数に変換を行ない、圧縮データ格納
バッファ521への格納を行なう。
【0052】バッファクリア部507は、ビット差分カ
ウント部505によりカウントが開始される前や処理中
に、必要に応じて差分格納バッファ522をはじめとす
る各バッファをクリアするものである。
【0053】圧縮判別部508は、固定ビットを基にし
た差分数を用いた圧縮により得られた圧縮データと、元
データ量との比較を行ない、外部記憶装置6に格納すべ
きデータを圧縮によって得られた圧縮データか、あるい
は元データかを判別するものである。圧縮判別部508
は、元データ量格納バッファ524に格納されている元
のデータ量と、データ量格納バッファ523に格納され
ているデータ量とを比較する。
【0054】ループ判別部509は、ブロック数格納バ
ッファ527とループカウントバッファ528に格納さ
れている数値の比較を行ない、必要とする繰り返しの処
理(全てのブロックについての処理)が実行されたかを
判別する。
【0055】データ格納バッファ520は、データ読み
込み部502から読み込まれた圧縮の対象とするデータ
を格納するためのものである。圧縮データ格納バッファ
521は、所定のデータ形式で圧縮された圧縮済みのデ
ータを格納するためのものである。差分格納バッファ5
22は、基準となるビット(第2実施例では「1」か
ら)が出現してから次の同じビットが出現するまでのビ
ット数(差分)をカウントするためのものである。デー
タ量格納バッファ523は、圧縮データのデータ量を格
納するためのものである。元データ量格納バッファ52
4は、データ格納バッファ520に格納された圧縮対象
とするデータのデータ量を格納するためのものである。
処理データ格納バッファ525は、処理対象とする1バ
イト分のデータを格納するためのものである。フラグ格
納バッファ526は、「圧縮」の実行、あるいは「非圧
縮」を示す情報である圧縮フラグを格納するためのもの
である。ブロック数格納バッファ527は、処理対象と
するデータのブロック数を格納するためのものである。
ループカウントバッファ528は、処理対象とするデー
タの幾つのブロックに対して処理を実行したかをカウン
トするためのものである。
【0056】次に、第2実施例の動作について、図10
及び図11に示すフローチャートを参照しながら説明す
る。第2実施例では、圧縮対象データに対して、「1」
のビットが出現してから次の「1」が出現するまでの差
分(ビット「0」が連続する数)に基づいて、データ圧
縮を行なう例を用いて説明する。
【0057】まず、初期化部501は、バッファ部54
中の各バッファを初期化する(ステップA1)。データ
読み込み部502は、圧縮の対象となるデータがいくつ
のブロックから構成されているか、その数を入力装置7
を介して入力する。データ読み込み部502は、入力さ
れたデータのブロック数をブロック数格納バッファ52
7に格納する(ステップA2)。
【0058】ここで、バッファクリア部507は、ブロ
ック数格納バッファ527、及びループカウントバッフ
ァ528を除く、他のバッファを全てクリアする(ステ
ップA3)。
【0059】ループ判別部509は、ループカウントバ
ッファ528に格納されている数値が、ブロック数格納
バッファ527に格納されている数値と比較する(ステ
ップA3)。この結果、ループカウントバッファ528
に格納されている数値の方が小さい場合、すなわち処理
を継続する必要がある場合には、データ読み込み部50
2が起動される。
【0060】データ読み込み部502は、外部記憶装置
6に格納されている圧縮対象データの1ブロック分を読
み込み、データ格納バッファ520に格納する(ステッ
プA5)。
【0061】例えば、図12に示すように、「1000
0000 0〜0 00100000」(総バイト数1
00バイトで1ビット目と795ビット目に「1」があ
る)という1ブロック分の圧縮対象データが読み込ま
れ、データ格納バッファ520に格納されたものとす
る。
【0062】また、データ読み込み部502は、データ
格納バッファ520に格納されているデータのデータ量
を元データ量格納バッファ524に格納する(ステップ
A6)。(例では「100」という数値データが格納さ
れる)。
【0063】ビット判別部504は、データ格納バッフ
ァ520に格納されているデータの先頭から順に1バイ
ト(8ビット)ずつ処理データ格納バッファ525に格
納し(ステップA7)、(例では「10000000」
が格納される)、先頭ビットが「1」か「0」かの判別
を行なう(ステップA8)。
【0064】ここで、ビット判別部504により先頭ビ
ットが「1」と判別された場合(はじめに第1バイトの
1ビット目)、最適バイト数判別部506が起動し、差
分格納バッファ522に格納されている差分数(1ビッ
ト目の場合、差分格納バッファ522に格納されている
差分数は「0」)に1を加える(ステップA9)。
【0065】また、最適バイト数判別部506は、その
差分数の値(ここでは1」)を表現するのに必要な最小
のバイト数を判別し、そのバイト数で後述する所定の圧
縮データの形式に差分数を変換し(1ビット目について
は1バイトの圧縮データとなる)、圧縮データ格納バッ
ファ521に格納する(ステップA10)。また、最適
バイト数判別部506は、圧縮データのバイト数(ここ
では「1」バイト)を、データ量格納バッファ523に
格納されている値(初期値は0)に加える(ステップA
13)。
【0066】次に、圧縮判別部508が起動される。圧
縮判別部508は、元データ量格納バッファ524に格
納されている元のデータ量と、データ量格納バッファ5
23に格納されているデータ量の比較を行なう(ステッ
プA15)。
【0067】この比較の結果、元データ量格納バッファ
524に格納されている元データ量が、データ量格納バ
ッファ523に格納されているデータ量より大きい場合
には、バッファクリア部507が起動される。すなわ
ち、圧縮を行なうことによってデータ量を縮小できたた
め、外部記憶装置6に格納するデータとして圧縮データ
が選択される。
【0068】バッファクリア部507は、差分格納バッ
ファ522をクリアし、次ビットの処理に備える(ステ
ップA16)。ビット判別部504は、データを1ビッ
ト左にシフトし、判別対象とするビットを次のビットに
変更する(ステップA17)。
【0069】ここで、ビット判別部504は、処理デー
タ格納バッファ525中の1バイト分の全ビットに対し
てビット判別を行なったかどうか判定する(ステップA
18)。全ビットに対してビット判別を行なっていない
ならばステップA8に戻る。
【0070】処理が2ビット目に移ると、ステップA8
において、ビット判別部504は、先頭ビットが「0」
と判別する。ビット差分カウント部505は、差分格納
バッファ522に格納されている差分数(初期値は0)
に1を加え(ステップA9)、差分格納バッファ522
に再格納する。
【0071】2ビット目以降、圧縮対象データは、図1
3(a)に示すように、793個の「0」が連続してい
る。従って、全バイトに対してビット判別を行なったか
どうか判定しながら(ステップA19)、ステップA1
7,A18,A19,A7,A8,A14の処理を繰り
返した結果、次のビット「1」が出現するまでに(第1
00バイトの5ビット目)、差分格納バッファ522に
は、図13(b)に示すように「794」が差分数とし
て格納される。
【0072】最適バイト数判別部506は、差分数の値
「794」を表現するのに必要な最小のバイト数を判別
する(ステップA10)。この場合、図13(c)に示
すように、2バイトで表現することができる。そして、
最適バイト数判別部506は、図13(d)に示すよう
な、所定の圧縮データの形式に差分数を変換する(ステ
ップA11)。
【0073】この変換では何バイトに変換されたかが判
別できるように、図14に示すように、圧縮データの各
バイトの先頭ビットをフラグとして用い、残りの7ビッ
トで差分数を表現する。バイトの先頭ビットが「1」の
ときは、そのバイトが差分を表現しているバイトの先頭
を表し、先頭ビットが「0」の時は前のバイトから連続
していることを表すものとする。
【0074】従って、圧縮データの1バイトは、図14
(a)に示すように、7ビットで表現できる数、2バイ
トは、図14(b)(c)に示すように、14ビットで
表現できる数、以下7ビットずつ増加するビット数で、
差分数を表現することが可能である。
【0075】ただし、1バイトで表現できる数は、「1
27」がフラグ「1」を付した際に、後述する圧縮デー
タの区切り記号「ff」(16進数表記)と同一となる
ため「126」までとし、2バイトで表現できる数は、
上位バイトが圧縮データの区切り記号「ff」(16進
数表記)と同一とならないように「16255」までと
する。
【0076】この結果、図13(a)の例では、1ビッ
ト目の「1」は「10000001」(16進数表記で
「81」)という1バイトの圧縮データ、次のビット
「1」が出現するまでの差分数「794」は、図13
(d)に示すように、「10000110000110
10」(16進数表記で「861A」)という2バイト
の圧縮データに変換される。すなわち、圧縮データ格納
バッファ521には、図15に示すような圧縮データが
格納される。
【0077】このとき、最適バイト数判別部506は、
データ量格納バッファ523に格納されているバイト数
に変換されたバイト数を加え、再びデータ量格納バッフ
ァ523に格納する(ステップA13)。
【0078】つまり、最適バイト数判別部506は、デ
ータ量格納バッファ523に格納されている「1」(第
1ビットについての圧縮データのバイト数)に、連続す
るビット「0」に関する圧縮データのバイト数「2」を
加えて、データ量格納バッファ523に再格納する(圧
縮データバイト数「3」)。
【0079】次に、圧縮判別部508が起動される。圧
縮判別部508は、元データ量格納バッファ524に格
納されている元のデータ量と、データ量格納バッファ5
23に格納されているデータ量の比較を行なう(ステッ
プA15)。
【0080】この比較の結果、データ量格納バッファ5
23に格納されているデータ量が、元データ量格納バッ
ファ523に格納されている元データ量より小さく、全
バイトについてビット判別を行なった場合(ステップA
19)には、圧縮判別部508は、「圧縮」の実行を示
す情報(圧縮フラグ「1」)をフラグ格納バッファ52
6に格納する(ステップA20)。その後、データ保存
部503が起動される。
【0081】データ保存部50は、図16に示すよう
に、圧縮データ格納バッファ521に格納されている圧
縮データに区切り記号を加えて外部記憶装置6に格納す
る(ステップA21)。本実施例では、区切り記号とし
て「ff」(16進数表記)を用いている。
【0082】さらに、データ保存部50は、元データ量
格納バッファ524に格納されている元データのデータ
量、及びフラグ格納バッファ526に格納されている圧
縮・非圧縮の何れかを示す圧縮フラグの内容(ここでは
圧縮フラグ「1」)、及びデータ量格納バッファ523
に格納されているデータ量を、区切り符号を付加して、
図17に示すように(例では「100 1 3/」)、
外部記憶装置6に格納する(ステップA22)。(各ブ
ロック毎に外部記憶装置6に格納される、これらのデー
タを圧縮データ構造テーブルとする)。そして、ループ
カウントバッファ528に格納されている数値に「1」
を加えて、ステップA4の処理に戻る。
【0083】一方、ステップA15における比較の結
果、データ量格納バッファ523に格納されているデー
タ量が、元データ量格納バッファ524に格納されてい
る元データ量より小さくない場合には、データ保存部5
03が起動される。すなわち、圧縮を行なうことによっ
てデータ量を縮小できないため、外部記憶装置6に格納
するデータとして元のデータが選択される。
【0084】データ保存部50は、データ格納バッファ
520に格納されているデータに、区切り記号を加えて
外部記憶装置6に格納する(ステップA24)。また、
データ保存部50は、フラグ格納バッファ526に「非
圧縮」を示す情報(圧縮フラグ「0」」を格納し、さら
にデータ量格納バッファ523に、元データ量格納バッ
ファ524に格納されている元のデータ量を示すデータ
を格納する(ステップA25)。データ保存部50は、
フラグ格納バッファ526に格納されている圧縮・非圧
縮の何れかを示す圧縮フラグの内容(ここでは圧縮フラ
グ「0」)、及びデータ量格納バッファ523に格納さ
れているデータ量(ここでは元データ量と同じ)を、区
切り符号を付加して、外部記憶装置6に格納する(ステ
ップA22)。そして、ループカウントバッファ528
に格納されている数値に「1」を加えて、ステップA4
の処理に移る。
【0085】以上で、1つのブロックのデータの圧縮が
終了する。図16に示すように、外部記憶装置6に格納
された圧縮データは、各バイトの内容に基づいて展開す
ることにより、元のデータに伸張することができる。例
えば、図18(a)に示すような圧縮データ構造テーブ
ルと、図18(c)に示すような圧縮データが外部記憶
装置6に格納されている際に、3番目のブロックに対応
する圧縮データを元に戻す場合について説明する。
【0086】まず、圧縮データ構造テーブルから、対象
とするデータの直前(2番目のブロック)までのデータ
を参照し、直前のデータまでのデータ量を図18(b)
に示すようにして求める。図18(a)に示す例では、
図18(b)に示すように、1番目の圧縮データのデー
タ量(3バイト)+区切り記号(1バイト)と、2番目
の元データのデータ量(150バイト)+区切り記号
(1バイト)の総和で、155バイトとなる。
【0087】すなわち、図18(c)に示す圧縮データ
の先頭から405バイトが不要なデータであり、156
バイト目から次の区切り記号までのデータ(圧縮データ
構造テーブルの3番目のデータの情報が示すデータ量5
バイト)が、対象とする3番目のデータとなる。図18
(d)に示す、3番目のデータのみを元に戻すことで、
所望するデータが得られる。
【0088】このようにして、構造的に複数のブロック
に分割して2進数のビット列で取り扱われているデータ
について、ブロック単位で固定ビット(例えば「1」)
の差分数を基にした圧縮を行なうことにより、データ量
を小規模化し、外部記憶装置6内のデータ占有率を減少
させることができる。さらに、ブロック単位でデータを
扱えるため、データの取扱いが容易となり、処理時間も
短縮できる。
【0089】また、データ圧縮を行なった際に、圧縮デ
ータのデータ量が圧縮を行なう前の元データ量を越えた
場合には、圧縮データを用いないことにより、ブロック
単位で常に最適な(データ量の少ない方の)データが格
納され、効果的な圧縮が可能となる。
【0090】
【発明の効果】以上のように本発明によれば、従来のデ
ータ圧縮方式では十分に圧縮できなかった2進数のビッ
ト列で取り扱われる大容量のデータに対して効果的にデ
ータ量を小さくする圧縮を行ない、記憶装置を有効的に
利用すると共に、データの取扱いを容易にすることが可
能となるものである。
【0091】さらに本発明によれば、ブロック単位で圧
縮を行なうので、データの取扱いが容易となると共に処
理時間が短縮され、またブロック毎に最適なデータが選
択されて記憶装置に格納されるので効率的なデータ圧縮
が実現できるものである。
【図面の簡単な説明】
【図1】本発明の第1実施例を実現するための装置の概
略構成を示すブロック図。
【図2】第1実施例におけるデータ圧縮装置の構成を示
すブロック図。
【図3】第1実施例におけるデータ圧縮処理の動作を説
明するためのフローチャート。
【図4】第1実施例で用いられる圧縮データの形式を説
明するための図。
【図5】第1実施例において圧縮データ格納バッファ2
21に格納された圧縮データの例を示す図。
【図6】第1実施例において外部記憶装置2に格納され
る圧縮データの例を示す図。
【図7】本発明の第2実施例を実現するための装置の概
略構成を示すブロック図。
【図8】第2実施例における図7に示す制御装置5の内
部構成の概略を示すブロック図。
【図9】第2実施例におけるデータ圧縮装置の構成を示
すブロック図。
【図10】第2実施例におけるデータ圧縮処理の動作の
一部を説明するためのフローチャート。
【図11】第2実施例におけるデータ圧縮処理の動作の
一部を説明するためのフローチャート。
【図12】第2実施例におけるデータ格納バッファ52
0に格納される処理対象とするブロックのデータの一例
を示す図。
【図13】第2実施例で用いられる圧縮データの形式を
説明するための図。
【図14】第2実施例で用いられる圧縮データが表現す
る数値を説明するための図。
【図15】第2実施例における圧縮データ格納バッファ
521に格納される圧縮データの一例を示す図。
【図16】第2実施例における外部記憶装置2に格納さ
れる圧縮データの一例を示す図。
【図17】第2実施例における外部記憶装置6に格納さ
れる圧縮データ格納テーブルの一例を示す図。
【図18】第2実施例における圧縮データから所望する
データを取得する処理を説明するための図。
【符号の説明】
1,5…制御装置、2,6…外部記憶装置、7…入力装
置、201、501…初期化部、202,502…デー
タ読み込み部、203,503…データ保存部、20
4,504…ビット判別部、205,505…ビット差
分カウント部、206,506…最適バイト数判別部、
207,507…バッファクリア部、220,520…
データ格納バッファ、221,521…圧縮データ格納
バッファ、222,522…差分格納バッファ、22
3,523…データ量格納バッファ、224,524…
元データ量格納バッファ、225…作業バッファ、50
8…圧縮判別部、509…ループ判別部、525…処理
データ格納バッファ、526…フラグ格納バッファ、5
27…ブロック数格納バッファ、528…ループカウン
トバッファ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 中本 幸夫 東京都青梅市新町1381番地1 東芝コンピ ュ―タエンジニアリング株式会社内 (72)発明者 岩井 勇 神奈川県川崎市幸区柳町70番地 株式会社 東芝柳町工場内 (72)発明者 栗原 基 東京都青梅市末広町2丁目9番地 株式会 社東芝青梅工場内

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 2進数のビット列で取り扱われるデータ
    について、ビット「0」あるいはビット「1」の何れか
    一方を固定ビットとして設定し、前記ビット列の各ビッ
    トが前記固定ビットであるか否かを判別するビット判別
    手段と、 前記ビット列について、前記ビット判別手段によって前
    記固定ビットと判別されたビット位置から、次に前記固
    定ビットが出現するビット位置までのビットの差分数を
    計数するビット差分計数手段と、 前記ビット差分計数手段によって計数された差分数を、
    その差分数が最小のバイト数で表現される形式のデータ
    に変換する最適バイト数判別変換手段と、 を具備し、 前記ビット列を前記固定ビットに基づく差分を用いてデ
    ータ変換することを特徴とするデータ圧縮装置。
  2. 【請求項2】 2進数のビット列で取り扱われているデ
    ータにおいて、ビット「0」あるいはビット「1」の何
    れか一方のビットを固定ビットとして設定し、 前記ビット列のデータの先頭ビットを起点として、この
    起点から順次、前記固定ビットの第N+1ビットが出現
    するまでのビット数の差分をN番目のデータとして表現
    するようなデータ形式に変換し、 固定ビットが出現するまでのビット数の差分を用いて元
    のデータを表現することを特徴とするデータ圧縮方法。
  3. 【請求項3】 前記固定ビットの第Nビットから第N+
    1ビットが出現するまでのビット数の差分を、その差分
    を表現できる最小のバイト数で表現するデータ形式に変
    換することを特徴とする請求項2記載のデータ圧縮方
    法。
  4. 【請求項4】 M個(M≧1)のブロックに分けられた
    2進数のビット列で取り扱われるデータについて、1つ
    のブロックのデータ中でビット「0」あるいはビット
    「1」の何れか一方を固定ビットとして設定し、前記ビ
    ット列の各ビットが前記固定ビットであるか否かを判別
    するビット判別手段と、 前記ビット列について、前記ビット判別手段によって前
    記固定ビットと判別されたビット位置から、次に前記固
    定ビットが出現するビット位置までのビットの差分数を
    計数するビット差分計数手段と、 前記ビット差分計数手段によって計数された差分数を、
    その差分数が最小のバイト数で表現される形式のデータ
    に変換する最適バイト数判別変換手段と、 前記最適バイト数判別変換手段の変換によって得られた
    データのデータ量と変換前の元データのデータ量とを比
    較してデータ量が少ないデータを選択する圧縮判別手段
    と、 前記圧縮判別手段によって選択されたデータを保存する
    データ保存手段と、 を具備し、 前記ビット列を前記固定ビットに基づく差分を用いてデ
    ータ変換することによって得られたデータ、または変換
    前の元データのデータ量の少ない何れか一方を、各ブロ
    ック単位で保存することを特徴とするデータ圧縮装置。
  5. 【請求項5】 前記データ保存手段によって保存される
    データに対応して、前記ブロック毎に、ブロック内の元
    データのデータ量、前記元データに対する処理の結果、
    前記圧縮判別手段に何れが選択されたかを示す情報、及
    び前記圧縮判別手段によって選択されたデータのデータ
    量を含むテーブルを保存することを特徴とする請求項4
    記載のデータ圧縮装置。
  6. 【請求項6】 前記テーブルをもとに、前記データ保存
    手段によって保存されたデータ変換されたデータを、ブ
    ロック単位で元のデータに戻すことを特徴とする請求項
    5記載のデータ圧縮装置。
JP29962593A 1993-02-25 1993-11-30 データ圧縮装置及び方法 Pending JPH06309143A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29962593A JPH06309143A (ja) 1993-02-25 1993-11-30 データ圧縮装置及び方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP5-36646 1993-02-25
JP3664693 1993-02-25
JP29962593A JPH06309143A (ja) 1993-02-25 1993-11-30 データ圧縮装置及び方法

Publications (1)

Publication Number Publication Date
JPH06309143A true JPH06309143A (ja) 1994-11-04

Family

ID=26375724

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29962593A Pending JPH06309143A (ja) 1993-02-25 1993-11-30 データ圧縮装置及び方法

Country Status (1)

Country Link
JP (1) JPH06309143A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100365939C (zh) * 2004-02-11 2008-01-30 中国科学院空间科学与应用研究中心 十二位计数压缩电路

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100365939C (zh) * 2004-02-11 2008-01-30 中国科学院空间科学与应用研究中心 十二位计数压缩电路

Similar Documents

Publication Publication Date Title
EP0293161B1 (en) Character processing system with spelling check function
JP3234104B2 (ja) 圧縮データをサーチする方法及びシステム
JP2534465B2 (ja) デ―タ圧縮装置および方法
US7584170B2 (en) Converting numeric values to strings for optimized database storage
JPH06508456A (ja) 多重レベルを利用するデータ圧縮
WO1989006882A1 (en) Method and system for storing and retrieving compressed data
EP0688105A2 (en) A bit string compressor with boolean operation processing capability
JP4003854B2 (ja) データ圧縮装置及び復元装置並びにその方法
AU4690496A (en) Method and apparatus for digital data compression
US6035311A (en) Method and system for performing a boolean operation on bit strings using a maximal bit slice
JP3531281B2 (ja) 文書登録検索装置
JPH06309143A (ja) データ圧縮装置及び方法
US6233574B1 (en) Method and apparatus for performing radix lookups using transition tables with pointers
US20090083267A1 (en) Method and System for Compressing Data
US6226411B1 (en) Method for data compression and restoration
JPH05257774A (ja) インデックス・レコード番号を圧縮・格納した情報検索装置
JPH06290021A (ja) ソースプログラム圧縮方法
JP3325326B2 (ja) 電子ファイリング装置
JP2931934B2 (ja) 数値検索装置
JP3053656B2 (ja) データ圧縮における辞書登録方式
JPS63187334A (ja) 文字列パタ−ンマツチング装置
AU772287B2 (en) System and method for high speed, high volume tabulation of data
JP2959497B2 (ja) データ処理装置及びデータ処理方法
JP2852253B2 (ja) データ検索装置
CN113972916A (zh) 一种lz77解码电路及其工作方法