KR20170014676A - 이진데이터의 압축 및 전송방법 - Google Patents

이진데이터의 압축 및 전송방법 Download PDF

Info

Publication number
KR20170014676A
KR20170014676A KR1020150108412A KR20150108412A KR20170014676A KR 20170014676 A KR20170014676 A KR 20170014676A KR 1020150108412 A KR1020150108412 A KR 1020150108412A KR 20150108412 A KR20150108412 A KR 20150108412A KR 20170014676 A KR20170014676 A KR 20170014676A
Authority
KR
South Korea
Prior art keywords
binary number
bit
tail
compressed
value
Prior art date
Application number
KR1020150108412A
Other languages
English (en)
Inventor
김정훈
Original Assignee
김정훈
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 김정훈 filed Critical 김정훈
Priority to KR1020150108412A priority Critical patent/KR20170014676A/ko
Publication of KR20170014676A publication Critical patent/KR20170014676A/ko

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

본 발명은 최상위 비트가 "11", "111", "1111", "11111", ... 등과 같이 2개이상의 연속된 "1"로 시작하는 이진수에 이어서 1개이상의 "0" 이 나타나는 이진수를 압축하는 발명이며 압축과정에서 아래 [1]부터 [5]과정을 거치고 압축해제시에는 그 반대과정을 거치면서 압축해제되는 발명이다.
[1] 먼저, 최상위 비트로부터 최하위 비트방향으로 이동하면서, 처음으로"0"을 만나기 전까지의 이진수를 head라고 명명하기로 한다.
[2] 다음으로, head의 비트수 길이계산하여 이를 2로 나눈 몫을 Q라하고 나머지를 R이라고 하자.
[3] 압축이진수의 첫비트는 R 의 값에 의존하는데, R=1 이면, "1"을 R=0이면 "0"으로 한다.
[4] 다음으로, 압축대상 이진수의 tail을 이어서 붙이는데, 압축이진수의 첫비트가 "1"일 경우에는 tail은 비트반전없이 그대로 붙인다. 왜냐하면 tail은 반드시 "0"으로 시작하기 때문이다. 만약 압축이진수의 첫비트가 "0"일 경우에는 tail은 비트반전을 수행하고 붙인다 . 비트반전이라하면, tail을 구성하고 있는 각비트의 값이 "1"일경우에는 "0"으로 "0"일경우에는 "1"로 변환하는 과정이다.
[5] 다음으로 Q 값에 해당하는 길이만큼의 압축이진수에 이어서 붙이는데, 이를 Q-END 라고 하고, 압축 이진수의 TAIL의 최하위 비트의 값이 "1"이면, Q-END는 "0"으로만 이루어진 이진수로서 Q값에 해당하는 길이만큼의 이진수로서 TAIL에 이어서 붙는다.

Description

이진데이터의 압축 및 전송방법{BINARY DATA COMPRESSION AND TRANSFERATION METHOD AND APPRARTUS THEREOF}
데이터 압축 및 전송기술
데이터 압축 및 전송기술
발명을 실시하기 위한 구체적인 내용에 상술
발명을 실시하기 위한 구체적인 내용에 상술
발명을 실시하기 위한 구체적인 내용에 상술
본 발명은 최상위 비트가 "11", "111", "1111", "11111", ... 등과 같이 2개이상의 연속된 "1"로 시작하는 이진수에 이어서 1개이상의 "0" 이 나타나는 이진수를 압축하는 발명이다.
예를들어, 일 실시례로서,
1110001111011 이라는 이진수에 있어서, 상기와 같이 "111"로 시작하므로 본 발명으로 압축이 가능한 이진수이다. 이러한 형태의 이진수를 압축하는 방법을 아래에 보인다.
[1] 먼저, 최상위 비트로부터 최하위 비트방향으로 이동하면서, 처음으로"0"을 만나기 전까지의 이진수를 head라고 명명하기로 한다. 본 실시례에서 head는 "111"이다. head이후의 나머지 이진수를 tail이라고 하면 tail 은 "0001111011" 이다.
[2] 다음으로, head의 비트수 길이계산하여 이를 2로 나눈 몫을 Q라하고 나머지를 R이라고 하자. 그러면 상기예에서는 head가 3비트이므로, Q=1, R=1이 된다.
[3] 압축이진수의 첫비트는 R 의 값에 의존하는데, R=1 이면, "1"을 R=0이면 "0"으로 한다. 본 실시례에서는 R=1이므로 압축이진수의 첫비트는 "1"이다.
[4] 다음으로, 압축대상 이진수의 tail을 이어서 붙이는데, 압축이진수의 첫비트가 "1"일 경우에는 tail은 비트반전없이 그대로 붙인다. 왜냐하면 tail은 반드시 "0"으로 시작하기 때문이다. 만약 압축이진수의 첫비트가 "0"일 경우에는 tail은 비트반전을 수행하고 붙인다 . 비트반전이라하면, tail을 구성하고 있는 각비트의 값이 "1"일경우에는 "0"으로 "0"일경우에는 "1"로 변환하는 과정이다.
실시례에서는 tail은 반전하지 않고 압축 이진수에 붙이면, 아래와 같다.
Figure pat00001

다음으로 Q 값에 해당하는 길이만큼의 압축이진수에 이어서 붙이는데, 이를 Q-END 라고 하고, 압축 이진수의 TAIL의 최하위 비트의 값이 "1"이면, Q-END는 "0"으로만 이루어진 이진수로서 Q값에 해당하는 길이만큼의 이진수로서 TAIL에 이어서 붙는다. 본 실시례에서 Q=1 이었고, TAIL의 최하위 비트가 "1"이었으므로, Q-END 는 "0" 이다 이것이 붙은 최종 압축이진수는 아래와 같다. 압축대상 이진수 13비트가 압축이진수 12비트로 1비트 압축됨을 알수 있다.
Figure pat00002
상기 압축이진수를 압축해제하는 방법을 아래에 보인다.
먼저, 압축이진수의 최상위 1비트로부터 R을 구한다. 상기 압축이진수의 예를들면, R=1이다. 다음으로, Q를 구해야하는데, 최하위 비트로부터 최상위 비트방향으로 이동하면서, 처음으로 비트값의 변화가 생기는 지점을 찾고, 그 지점 이하비트로부터 최하위 비트까지의 이진수의 길이가 Q값이다. 아래 그림에서 보면 압축이진수의 최하위 비트에서 최상위 비트방향으로 이동하다가 비트값 변화가 처음으로 생긴지점이 붉은 색 선이고 이로부터 최하위 비트까지가 1비트이므로, Q=1이다.
Figure pat00003

이제 압축이진수로부터 압축대상 원본이진수의 head를 구할수 있는데, 2로 나누어 몫이 1이고, 나머지가 1 인수는 3이므로, head는 3비트의 "1"로만 이루어진 이진수 "111"임을 알수 있다. 이제 이 head 다음에 tail을 붙여야 하는데,
압축이진수의 tail은 "0001111011" 로서 최상위 비트가 "0"이므로 별도의 비트반전없이 그대로 head다음에 이어붙인다.
즉 최종압축해제 이진수는 "111" + "0001111011" 의 과정을 거쳐
"11100001111011" 이며, 이는 압축전의 이진수와 완전히 동일하게 복원된것을 알 수 있다.
또다른 실시례로서,
"1111111100000111110101" 이라는 이진수를 생각해보면,
head영역은 "11111111" 의 8비트이고
이를 2로 나누면, 몫(Q)은 4이고 나머지(R)=0이다.
한편, tail 영역은 "00000111110101" 의 14비트이다.
[1] 먼저 압축이진수의 최상위 비트는 R로 구성되므로, R=0이기 때문에 "0" 으로 시작한다.
[2] 다음으로, tail 영역을 이어붙이는데 압축이진수의 최상위 비트가 R값에 따라 "0" 으로 시작하고 ,tail영역은 반드시 "0"으로 시작하게 되어 있기때문에, 이러한 경우에는 tail영역이 비트반전을 하여 붙인다. 즉 비트반전한 "11111000001010" 을 이어붙인다.
[1],[2] 과정을 거친 압축이진수는 아래 그림과 같다.
Figure pat00004
[3] 이제 상기 압축이진수의 최하위 비트이후에 Q를 표현해야하는데, Q=4이고, 압축이진수의 최하위 비트가 상기 그림에서 "0"이므로, Q-END는 4비트의 "1"로만 이루어진 이진수 "1111" 로 표현하면 된다.
따라서 최종 압축이진수는 아래그림과 같이 "0111110000010101111" 과 같다.
Figure pat00005

따라서 22비트의 원본이진수는 18비트의 상기와 같은 압축이진수로 압축된다.
이제 상기 압축이진수의 압축해제과정을 설명하고자 한다.
[1] 먼저, 압축이진수의 최상위 1비트값을 취하여 이를 R로 한다. 상기 압축이진수의 최상위 비트값은 "1"이므로 R=1이다.
[2] 다음으로, 최하위비트로부터 최상위 비트방향으로 이동하면서 처음으로 비트값 변화가 생긴 지점이하부터 최하위 비트까지의 비트길이가 Q이다.
따라서 Q=4임을 알수있다.
Figure pat00006
[3] 위의 [1],[2]과정을 거치면, 압축전 이진수의 head를 구할수 있는데, 2로 나누어서 몫(Q)이 4이고, 나머지(R)=0 인 수는 8 이므로, head는 8비트의 "1"로만 이루어진 이진수 "11111111"임을 알수 있다.
[4] 이어서 tail을 붙여야 하는데, 상기 압축이진수의 tail은 "11111000001010" 이고, 원본이진수에서 tail은 반드시 "0"으로 시작한다고 상술되어 있으므로, 강제로 비트반전하여 "00000111110101" 로 하여 "0"으로 시작하도록 만든뒤 이어붙이면,
"11111111" + "00000111110101" 이 되어 "1111111100000111110101" 로서 원본이진데이터와 완벽히 일치함을 알수있다.
위와 같은 방식으로, "11", "111", "1111", ...등과 같이 2개이상의 "1"로시작하는 이진수의 경우 압축이 가능하며,
Q와 R을 구할때, head의 길이를 2로 상기 실시례에서는 나누었으나 여기에 국한되지 않고 임의의 자연수 N으로 head의 길이를 나눌수 있고, 그때 Q 및 R의 값을 구하여 상기과정과 동일한 과정으로 압축과 압축해제가 가능하다.
단, 자연수 N으로 head를 나눌때, R은 상기 2로 나눌때처럼 "0", "1"의 1비트가 아니라, 예를들어 N=8이라면 나머지 R 은 0~7까지의 값을 가질수 있으므로, 3비트를 차지하게 된다. 압축해제시에는 예를들어, N=8일경우에는 최상위 비트에서 3비트를 떼서 R로하고, Q, tail을 구한뒤, 압축해제과정에 따라 압축해제하면 된다.
N에 따라 R이 차지하는 비트수는 통상
Figure pat00007
이상인 최소한의 정수이면 된다.
한편 본 발명은 2개이상의 연속된 "1"로 시작하는 이진수의 경우에 적용되는 압축알고리즘이나 2개이상의 "0"이 연속된 이진수의 경우에도 비트반전한뒤 압축알고리즘을 적용할 수 있다. 물론 비트반전여부를 별도의 값으로 저장하여야 한다.
1개의 연속된 "1"로 시작하는 이진수에 대해서도, 동일한 압축 및 압축해제 알고리즘이 적용은 가능하며,
N=2일경우, Q=0, R=1인 경우로서 Q=0 인 경우를 최소비트인 1비트로 표현하고, Q=1이상일경우에는 1+Q비트로 표현하면 된다. 단 이때에는 압축효과는 나타나지 않는다. 즉 Q=1일때는 2비트로, Q=2일때는 3비트,,, 등과 같이 표현할 수 있다.
한편 상기 압축 및 압축해제 과정을 연쇄적으로 수행할수도 있다.
예를들어, 11111100000101110100111 이라는 이진수의 경우에 있어서, 상기 압축과정을 거치면,
<1차 압축이진수 생성> 먼저 head ("111111") 및 tail("00000101110100111")을 분리하고,
N=2일때, Q=3 , R=0 이므로, tail은 비트반전하면
"11111010001011000" 이다.
이때 R은 별도의 공간에 보관하는데 이를 R stack이라고 하고 여기에 1차 압축시의 R을 보관해둔다.
그리고 비트반전된 상기 tail 뒤에 Q를 반영하는데, 최하위 비트값이 "0"이므로, Q-END는 3비트의 이진수"111"을 이어붙이면, 1차 압축이진수가 아래와 같이 생성되고, R stack에 "0"이 처음으로 저장된다.
"11111010001011000111"
<2차 압축이진수 생성> 이제 상기 1차 압축이진수를 기초로2차 압축이진수를 이어서 만드는데, 상기 1차 압축이진수를 보면 역시 head와 tail이 분리가능하고 상기 1차 압축이진수의 압축과정을 동일하게 수행하여 2차 압축이진수를 만들고 R stack에 2번째 R을 저장하게 된다.
이와 같은 과정을 계속 반복하여, 최종적으로 head만 남기되면 압축은 종료된다. 압축해제 과정은 이의 역과정으로 진행되며, R stack에서 순차적으로 최종압축이진수에 해당되는 R부터 하나씩 읽어서 Q와 R을 복원하고 tail을 복원하면서 압축해제 하게 된다.

Claims (1)

  1. 우선권주장을 위한 선출원으로 별도의 청구범위를 현재 작성하지 않음.
KR1020150108412A 2015-07-31 2015-07-31 이진데이터의 압축 및 전송방법 KR20170014676A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150108412A KR20170014676A (ko) 2015-07-31 2015-07-31 이진데이터의 압축 및 전송방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150108412A KR20170014676A (ko) 2015-07-31 2015-07-31 이진데이터의 압축 및 전송방법

Publications (1)

Publication Number Publication Date
KR20170014676A true KR20170014676A (ko) 2017-02-08

Family

ID=58155742

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150108412A KR20170014676A (ko) 2015-07-31 2015-07-31 이진데이터의 압축 및 전송방법

Country Status (1)

Country Link
KR (1) KR20170014676A (ko)

Similar Documents

Publication Publication Date Title
KR101737294B1 (ko) 심볼 압축을 수반하는 데이터의 소스 코딩 및 디코딩을 위한 방법들 및 디바이스들
JP6025923B2 (ja) 整数値データのストリームを圧縮するシステム及び方法
EP2214315A1 (en) Method and device for encoding a bit sequence
US8872677B2 (en) Method and apparatus for compressing data-carrying signals
JP2006211621A (ja) データ圧縮装置、及びデータ復元装置
JP6045123B2 (ja) エンコーダ、デコーダ及び方法
JP6073506B2 (ja) エントロピー変更器及び方法
KR101587944B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
KR101575939B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
JP6833643B2 (ja) 圧縮処理装置、伸長処理装置、圧縮処理用プログラム、伸長処理用プログラム
KR20170014676A (ko) 이진데이터의 압축 및 전송방법
EP2381687B1 (en) Method and apparatus for entropy decoding
JP2010258532A (ja) ビット長を符号に変換する回路及び方法
KR101549740B1 (ko) 이진 데이터의 압축 및 압축해제 방법과 장치
JP4093200B2 (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
US8854235B1 (en) Decompression circuit and associated compression method and decompression method
JP4093193B2 (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
KR101573983B1 (ko) 데이터 압축 및 데이터 복원 방법과 장치
KR101670606B1 (ko) 이진데이터의 압축 및 압축해제 방법
JP6280266B2 (ja) 復号装置、及び復号方法
Reddy et al. LosslessGrayscaleImage Compression Using Intra Pixel Redundancy
KR101760070B1 (ko) 데이터 부호화 및 복호화 방법과 장치
KR20170034460A (ko) 이진데이터의 실시간 압축 및 압축해제 방법
WO2011010170A2 (en) Lossless data compression and decompression method
KR101587946B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치