KR101700537B1 - 이진데이터 압축 및 압축해제 방법 - Google Patents

이진데이터 압축 및 압축해제 방법 Download PDF

Info

Publication number
KR101700537B1
KR101700537B1 KR1020150163187A KR20150163187A KR101700537B1 KR 101700537 B1 KR101700537 B1 KR 101700537B1 KR 1020150163187 A KR1020150163187 A KR 1020150163187A KR 20150163187 A KR20150163187 A KR 20150163187A KR 101700537 B1 KR101700537 B1 KR 101700537B1
Authority
KR
South Korea
Prior art keywords
binary
cluster
type
bit
compressed
Prior art date
Application number
KR1020150163187A
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 KR1020150163187A priority Critical patent/KR101700537B1/ko
Application granted granted Critical
Publication of KR101700537B1 publication Critical patent/KR101700537B1/ko

Links

Images

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)

Abstract

본 발명은 이진데이터를 다수의 바이너리 클러스터로 구분하는 단계; 상기 바이너리 클러스터를 "10"으로 시작하고 나머지가 1개 이상의 "1"로만 이루어지는 101타입, "10"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"으로만 이루어지는 10타입, 그리고 "100"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"이 나오고 이어서 1개 이상의 "1"이 나오는 1001타입으로 구분하는 단계; 상기 101타입 바이너리 클러스터에 대하여 자리내림에 의해 상기 10타입과 동일 형식의 압축 바이너리 클러스터를 생성하되, "101"의 경우 후속하는 압축 바이너리 클러스터의 "10" 다음에 이진수인 제 1 오리진비트를 추가하는 단계; 상기 10타입 바이너리 클러스터에 대하여 "10" 다음의 "0"을 "1"로 비트반전하되, "10"의 경우 그대로 유지함과 아울러 후속하는 압축 바이너리 클러스터의 "10" 다음에 제 1 오리진비트와 상이한 이진수인 제 2 오리진비트를 추가하는 단계; 및 상기 1001타입 바이너리 클러스터에 대하여 그대로 유지하는 단계;를 포함하도록 한 이진데이터 압축 및 압축해제 방법에 관한 것이다.
본 발명에 따르면, 압축 및 압축해제를 위한 처리 속도를 향상시킬 수 있고, 압축 및 압축해제의 결과값에 대한 신뢰성을 높일 수 있으며, 이진데이터 전송의 실질적인 트래픽을 절감할 수 있다.

Description

이진데이터 압축 및 압축해제 방법{Binary data compression and decompression method}
본 발명은 이진데이터 압축 및 압축해제 방법에 관한 것으로서, 보다 상세하게는 처리 속도가 뛰어나고, 압축 및 압축 해제의 신뢰성이 뛰어난 이진데이터 압축 및 압축해제 방법에 관한 것이다.
일반적으로, 이진수는 이진법으로 표현되는 수를 말하며, 0과 1로 나타내어지고, 컴퓨터 등에서 사용되는 데이터의 처리 및 표현에 사용된다.
이와 같은 이진수로 이루어진 이진데이터는 그 처리 속도 및 저장 용량 등을 고려하여 압축이 요구되는데, 종래의 이진데이터의 압축 및 압축해제 방법으로는 한국공개특허 제10-1999-022960호의 "이진 코드 압축과 복원방법 및 병렬압축과 복원 프로세서"가 개시된 바 있는데, 이는 이진 코드의 압축 방법으로서, 코드화된 신호 비트 값과 직교 부호화 함수 값과의 연속 곱(serial multiplication), 이후 일정 시간 주기 동안의 모든 곱(products)의 합산을 통한 초기 데이터 흐름의 변환을 포함하는 이진 코드 압축 방식에 있어서, 함수의 이산값이 부호화 함수로서 사용되며, 상기 함수는 주파수를 가진 가우시안 펄스 형태인 구분적 연속 함수이며, 부호화 변환로서 Duamel 시퀀스의 계산법이 사용되며, 데이터 입력 흐름과 부호화 함수의 이산값은 상기 시퀀스의 독립변수로 사용된다.
그러나, 이와 같은 종래의 이진데이터의 압축 방법은 데이터의 압축 및 압축해제에 대한 처리 과정이 복잡하여 처리 속도 향상에 제한이 따르고, 결과값에 대해서 신뢰성을 높이기가 어렵다는 문제점을 가지고 있었다.
상기한 바와 같은 종래 기술의 문제점을 해결하기 위하여, 본 발명은 압축 및 압축해제를 위한 처리 속도를 향상시킬 수 있고, 압축 및 압축해제의 결과값에 대한 신뢰성을 높이도록 하는데 목적이 있다.
본 발명의 다른 목적들은 이하의 실시예에 대한 설명을 통해 쉽게 이해될 수 있을 것이다.
상기한 바와 같은 목적을 달성하기 위해, 본 발명의 일측면에 따르면, 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "10"을 처음 만날 때마다 "10"의 앞에서 분할하여, 바이너리 클러스터로 구분하는 단계; 상기 바이너리 클러스터를 "10"으로 시작하고 나머지가 1개 이상의 "1"로만 이루어지는 101타입, "10"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"으로만 이루어지는 10타입, 그리고 "100"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"이 나오고 이어서 1개 이상의 "1"이 나오는 1001타입으로 구분하는 단계; 상기 101타입 바이너리 클러스터에 대하여 자리내림 또는 이진수 제거후 비트반전에 의해 상기 10타입과 동일 형식의 압축 바이너리 클러스터를 생성하되, "101"의 경우 후속하는 압축 바이너리 클러스터의 "10" 다음에 이진수인 제 1 오리진비트를 추가하는 단계; 상기 10타입 바이너리 클러스터에 대하여 "10" 다음의 "0"을 "1"로 비트반전하되, "10"의 경우 그대로 유지함과 아울러 후속하는 압축 바이너리 클러스터의 "10" 다음에 제 1 오리진비트와 상이한 이진수인 제 2 오리진비트를 추가하는 단계; 및 상기 1001타입 바이너리 클러스터에 대하여 그대로 유지하는 단계:를 포함하는, 이진데이터 압축 방법이 제공된다.
상기 자리내림은, 이진수에 대하여 상위비트로부터 숫자를 빌려오는 캐리다운 이벤트를 발생시키도록 빼주는 이진수를 상기 101타입 바이너리 클러스터로부터 뺄 수 있다.
상기 이진수 제거후 비트반전은, 상기 101타입 바이너리 클러스터에서, 최상위 비트를 제거한 다음, 나머지를 비트반전할 수 있다.
상기 바이너리 클러스터 중에서 최종의 바이너리 클러스터는 그대로 유지하는 단계를 더 포함할 수 있다.
본 발명의 다른 측면에 따르면, 본 발명의 일측면에 따른 이진데이터 압축 방법에 의하여 압축된 이진데이터의 압축 해제 방법으로서, 압축된 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "10"을 처음 만날 때마다 "10"의 앞에서 분할하여, 압축 바이너리 클러스터를 구분하되, 상기 압축 바이너리 클러스터는 상기 제 1 및 제 2 오리진비트를 제외하는 단계; 상기 압축 바이너리 클러스터를 "10"으로 시작하고 나머지가 1개 이상의 "1"로만 이루어지는 101타입, "10"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"으로만 이루어지는 10타입, 그리고 "100"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"이 나오고 이어서 1개 이상의 "1"이 나오는 1001타입으로 구분하는 단계; 상기 101타입의 압축 바이너리 클러스터에 대하여 "10" 다음의 "1"을 "0"으로 비트반전하는 단계; 상기 10타입의 압축 바이너리 클러스터에 대하여 자리올림 또는 비트반전후 이진수 부가에 의해 상기 101타입과 동일 형식의 바이너리 클러스터를 생성하되, 압축 바이너리 클러스터가 "10"이면서 후속하는 압축 바이너리 클러스터의 "10" 다음에 이진수인 제 1 오리진비트가 존재하는 경우 "101"로 복호화하고, 압축 바이너리 클러스터가 "10"이면서 후속하는 압축 바이너리 클러스터의 "10" 다음에 상기 제 1 오리진비트와 상이한 이진수인 제 2 오리진비트가 존재하는 경우 그대로 유지하는 단계; 및 상기 1001타입 바이너리 클러스터에 대하여 그대로 유지하는 단계:를 포함하는, 이진데이터 압축해제 방법이 제공된다.
상기 자리올림은, 이진수에 대하여 상위비트로 숫자를 올리는 캐리업 이벤트를 발생시키도록 더해지는 이진수를 상기 10타입의 압축 바이너리 클러스터에 더할 수 있다.
상기 비트반전후 이진수 부가는, 상기 10타입의 압축 바이너리 클러스터를 비트반전후, 최상위비트에 1을 부가할 수 있다.
상기 압축 바이너리 클러스터 중에서 최종의 압축 바이너리 클러스터는 그대로 유지하는 단계를 더 포함할 수 있다.
본 발명에 따른 이진데이터 압축 및 압축해제 방법에 의하면, 압축 및 압축해제를 위한 처리 속도를 향상시킬 수 있고, 압축 및 압축해제의 결과값에 대한 신뢰성을 높일 수 있으며, 이진데이터 전송의 실질적인 트래픽을 절감할 수 있다.
도 1은 본 발명의 일 실시례에 따른 이진데이터 압축 방법을 도시한 흐름도이다.
도 2는 본 발명의 일 실시례에 따른 이진데이터 압축 및 압축해제 방법에 사용되는 장치를 도시한 구성도이다.
도 3은 본 발명의 일 실시례에 따른 이진데이터 압축해제 방법을 도시한 흐름도이다.
본 발명은 다양한 변경을 가할 수 있고, 여러 가지 실시례를 가질 수 있는 바, 특정 실시례들을 도면에 예시하고, 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니고, 본 발명의 기술 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 식으로 이해되어야 하고, 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 하기 실시례에 한정되는 것은 아니다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 실시례를 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시례에 따른 이진데이터 압축 방법을 도시한 흐름도이다.
도 1을 참조하면, 본 발명의 일 실시례에 따른 이진데이터 압축 방법은 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "10"을 처음 만날 때마다 "10"의 앞에서 분할하여, 바이너리 클러스터로 구분하는 단계(S11)와, 상기 바이너리 클러스터를 "10"으로 시작하고 나머지가 1개 이상의 "1"로만 이루어지는 101타입, "10"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"으로만 이루어지는 10타입, 그리고 "100"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"이 나오고 이어서 1개 이상의 "1"이 나오는 1001타입으로 구분하는 단계(S12)와, 상기 101타입 바이너리 클러스터에 대하여, 상위비트로부터 숫자를 빌려오도록 임의의 이진수로 빼주는 자리내림을 하거나, 최상위비트를 제거후 비트반전하여, 상기 10타입과 동일 형식의 압축 바이너리 클러스터를 생성하되, 상기 101타입 바이너리 클러스터가 "101"로 이루어지는 경우, 상기 "101" 다음에 오는 바이너리 클러스터로부터 생성된 압축 바이너리 클러스터에서 "10" 다음에 이진수인 제 1 오리진비트를 추가하는 단계(S13,S14,S15)와, 상기 10타입 바이너리 클러스터에 대하여 "10" 다음의 "0"을 "1"로 비트반전하되, 상기 10타입 바이너리 클러스터가 "10"으로 이루어지는 경우, 그대로 유지함과 아울러 상기 "10" 다음에 오는 바이너리 클러스터로부터 생성된 압축 바이너리 클러스터에서 "10" 다음에 제 1 오리진비트와 상이한 이진수인 제 2 오리진비트를 추가하는 단계(S16,S17,S18)와, 상기 1001타입 바이너리 클러스터에 대하여 그대로 유지하는 단계(S19)를 포함할 수 있다. 여기서 자리내림은 예컨대 이진수에 대하여 상위비트로부터 숫자를 빌려오는 캐리다운 이벤트를 발생시키도록 빼주는 이진수를 101타입 바이너리 클러스터로부터 뺄 수 있다. 또한 이진수 제거후 비트반전은 101타입 바이너리 클러스터에서, 최상위 비트를 제거한 다음, 나머지를 비트반전할 수 있다. 한편, 바이너리 클러스터 중에서 최종의 바이너리 클러스터는 그대로 유지할 수 있다.
본 발명의 일 실시례에 따른 이진데이터 압축 방법을 상세히 설명하면 다음과 같다.
먼저, 원본 이진데이터가 있을 때, 이를 바이너리 클러스터 단위로 구분하는데(S11), 바이너리 클러스터는 일례로 최상위 비트로부터 최하위 비트 또는 그 역으로 이동하면서 처음 만나는 "10"에서 구분되는데, 아래와 같은 이진데이터를 예로 들어 설명하기로 한다.
10110100010101010101110001111
상기의 규칙에 따라 바이너리 클러스터를 나누면, 아래와 같이 된다.
101 / 10 / 1000 / 10 / 10 / 10 / 10 / 1011 / 10001111
한편 이러한 바이너리 클러스터는 3가지 형태로 구분이 가능하다.
첫번째로, 101타입이라고 부르는, "10"으로 시작하고, 나머지는 모두 최소한 1개 이상의 1로만 이루어진 바이너리 클러스터이다. 예를 들어, "101", "1011", "10111", "101111" 등과 같은 경우이다.
두번째로, 10타입이라고 부르는 "10"으로 시작하되, 나머지는 0개 또는 1개 이상의 모두 0으로만 이루어진 바이너리 클러스터이다. 예를 들어, "10", "100", "1000", "10000", "100000" 등과 같은 경우이다.
세번째로, 1001타입이라고 부르는, "100"으로 시작하고, 나머지는 0개 이상의 연속된 "0"이 먼저 나오고, 1개 이상의 연속된 "1"이 이어서 나오는 형태의 바이너리 클러스터이다. 예를 들어, "1001", "10011", "10001", "1000001111" 등과 같은 형태이다.
본 발명의 압축과정은 이진데이터를 우선 바이너리 클러스터로 나누는 단계(S11) 및 나누어진 바이너리 클러스터를 10타입, 101타입, 1001타입으로 구분하여 인식하는 단계(S12) 및 구분된 바이너리 클러스터 별로 각각 서로 다른 부호화 과정을 통해 압축하는 단계(S13~S19)를 포함한다.
이를 구체적으로 설명하면, 먼저, 101타입 바이너리 클러스터에 대하여 1번의 자리내림 연산을 시행한다(S14). 101타입에 대하여 캐리다운 이벤트를 이용한 자리내림 연산을 시행하면, 10타입으로 변화한다. 참고로, "캐리다운 이벤트"란 복수의 자리(비트수)로 이루어진 제 1 이진수에서 다른 제 2 이진수를 뺄 때, 제 1 이진수의 어떤 자리에서의 뺄셈을 위하여 그 윗자리로부터 숫자를 빌려오면서 자리내림 현상이 발생하는 것을 의미한다. 예를 들어, 이진수 101에서 이진수 1을 빼면 그 결과는 100이 되는데, 이 경우 뺄셈 후의 100은 뺄셈 전의 101과 비교하여 자리내림 현상이 발생하지 않는다. 즉, 뺄셈을 위하여 윗자리로부터 숫자를 빌려오는 현상인 캐리다운 이벤트가 발생하지 않는다. 반면, 이진수 101에서 이진수 11을 빼면 그 결과는 10이 되는데, 이 경우 뺄셈 후의 10은 뺄셈 전의 101과 비교하여 자리내림 현상이 발생한 것이다. 즉, 2번째 자리에서의 뺄셈을 위하여 그 윗자리인 세번째 자리로부터 숫자 1을 빌려와서 2번째 자리에서의 뺄셈을 수행하는 "캐리다운 이벤트"가 발생하며, 이를 통해 101로부터 자리내림하여 10이라는 결과가 얻어진다. 이 캐리다운 이벤트는 원래 숫자의 비트수 자체가 작아지는 경우뿐만 아니라, 내부에서 일어나는 최초의 자리내림 현상까지 포함하는 개념으로 사용된다. 즉, 이진수 110에서 이진수 1을 빼면 101이 되는 경우와 같이, 두번째 자리에서 자리내림이 발생한 것도 110에서 1이라는 캐리키를 이용하여 자리내림인 캐리다운 이벤트가 발생한 것으로 본다.
또한, 원래 이진수에 대하여 캐리다운 이벤트를 일으키도록 하기 위하여 뺄셈을 하는 이진수는 제 1 캐리포인트의 위치를 시점으로 하여 상위비트 방향으로 최소 개수의 1로만 이루어진 이진수. 예를 들어, 1, 11, 111, 1111 등을 말하며, 이를 "캐리키"라고 한다. 예를 들어 이진수 100의 경우에는 1을 빼면 11로 캐리다운 이벤트가 발생하는데, 이때에는 캐리키가 1이 된다. 하지만, 101의 경우에는 1을 빼더라도 캐리다운 이벤트가 발생하지 않고, 11을 빼야만 10이 되어 캐리다운 이벤트가 발생하므로 이때 캐리키는 11이 된다.
상기에서 "제 1 캐리포인트"는 캐리다운 이벤트를 일으키기 위한 캐리키의 가장 낮은 비트가 위치하는 자리를 의미할 수 있다.
이제 계속 압축과정을 진행하면, 상기와 같이 101타입 바이너리 클러스터에 대하여 자리내림 연산을 시행하면, 10타입 바이너리 클러스터가 되는데 이를 아래에서와 같이 예를 들기로 한다.
예시1)
10111
-1111
------------
1000
예시2)
1011
-111
----------------
100
이러한 2가지 예를 보듯이, 101타입 바이너리 클러스터는 자리내림 연산결과 모두 10타입으로 변화함을 알 수 있다.
이러한 101타입의 10타입으로의 1비트 압축과정은 보다 더 간단한 연산으로도 가능한데, 상기한 자리내림 단계(S14)를 대신하여 이진수 제거후 비트반전 단계를 수행할 수 있다. 즉 이진수 제거후 비트반전 단계는 101타입 바이너리 클러스터의 최상위 비트 "1"을 제거한 나머지 비트들을 비트반전하면, 1비트 감축된 10타입의 압축 바이너리 클러스터가 생성된다. 본 발명에서 비트반전은 "0"을 "1"로, "1"을 "0"으로 변경하는 것을 의미한다. 예를 들어, 10111이라는 101타입 바이너리 클러스터의 경우에, "10111"의 최상위 비트 "1"을 제거한 "0111"을 비트반전시키면, "1000"이 되어 10타입의 압축 바이너리 클러스터가 생성된다.
한편 101타입 바이너리 클러스터중에 "101"의 경우(S13) 연산을 거치면, "10"으로 변환되는데, 후술하겠으나, 10타입 바이너리 클러스터중에 "10"의 경우 별도의 연산과정없이 바로 "10"을 압축 바이너리 클러스터로 간주함으로써 이와 중복되는데, 이를 구분하기 위하여 다음에 오는 압축 바이너리 클러스터의 "10" 다음에 제 1 오리진비트를 삽입한 형태로 이를 추가하여, 실시간으로 압축해제할 수 있도록 한다.
"10"을 제외한 모든 10타입 바이너리 클러스터는 101타입의 압축 바이너리 클러스터로 변화시킬 수 있는데, 이때에는 비트의 이득은 발생하지 않는다. 예를 들어, "100"==> "101"로, "1000"==> "1011"로 변화시킨다. 이때는 자리내림 연산이 진행되지 않고, 단순히 10타입 바이너리 클러스터의 "10" 이후의 모든 "0"을 "1"로 치환, 즉 비트반전하는 연산을 시행한다(S17). 이때, "10"은 "10"의 2자리로는 101타입으로 변경이 불가능한데, 따라서, "10"은 그대로 "10"으로 별도의 연산을 시행하지 않고 그대로 바이너리 클러스터를 압축 바이너리 클러스터로 간주하고, "10"의 경우에 "101"에서 압축된 형태인지, "10"을 그대로 압축 바이너리 클러스터로 간주한 형태인지를 구분하기 위한 1비트의 제 2 오리진비트를 다음 압축 바이너리 클러스터의 "10" 이후에 위치시키고, 다음 압축 바이너리 클러스터의 나머지 부분을 제 2 오리진비트에 이어서 배치함으로써 실시간 전송이 가능하도록 한다(S18).
한편 1001타입 바이너리 클러스터에 대해서는 별도의 압축을 위한 연산을 시행하지 않고, 그대로 압축 바이너리 클러스터로 간주한다(S19). 그리고, 마지막으로 최종의 바이너리 클러스터는 유형에 관계없이 그대로 압축 바이너리 클러스터로 간주한다.
이러한 과정들을 정리하면, 압축을 위한 자리내림 연산은 101타입 바이너리 클러스터에 대하여, 10타입으로 변화하는 과정에서 실제로 이루어지고, 나머지 10타입 바이너리 클러스터에 있어서는, "10"을 제외하고, 나머지 "100", "1000", "10000", "100000" 등과 같은 예들은, "101", "1011", "10111", "101111" 등과 같은 101타입으로 변화가 있게 된다. 한편, 101타입 바이너리 클러스터 중에 "101"의 경우 자리내림 연산을 시행하면, "10"으로 변화하고, 10타입 바이너리 클러스터 중에 "10"의 경우 상기와 같이 별도의 변환 연산을 수행하지 않으므로, 그대로 "10"으로 남아있게 되는데, "10"이 압축연산 이후에 101타입의 "101"으로부터 자리내림의 결과인 "10"과 10타입의 "10"이 그대로 남은 것과 동일한 형태이기 때문에 이를 구분하기 위하여 별도의 오리진비트(origin bit)를 다음에 후속하는 압축 바이너리 클러스터의 "10" 다음에 위치시킴으로서 선행 압축 바이너리 클러스터 "10"의 압축해제 방법을 알 수 있게 된다.
상기의 과정을 예시로 설명하면, 1001011011100011100011101100011101100011110101101011110111011101110111011100010000와 같은 이진데이터가 있다면, 제 1 단계로, 먼저 원본 이진데이터를 바이너리 클러스터를 구분하는 방법에 따라 구분을 시행한다. 그 결과는 아래와 같다. 물론 아래 결과에서 "/"는 실제 물리적인 데이터가 아니라, 가상의 바이너리 클러스터 구분결과를 의미한다.
100 / 101 / 1011 / 100011 /100011 / 101 / 100011 / 101 / 1000111 / 10 / 101 / 10 / 10111 / 1011 / 1011 / 1011 / 1011 / 1011 / 1000 / 10000
제 2 단계로, 각 바이너리 클러스터 별로 유형을 확정하는 단계이다. 상기 제 1 단계에서의 아래 바이너리 클러스터별로 유형을 확정하면, 아래 표 1과 같다.
100 / 101 / 1011 / 100011 /100011 / 101 / 100011 / 101 / 1000111 / 10 / 101 / 10 / 10111 / 1011 / 1011 / 1011 / 1011 / 1011 / 1000 / 10000
바이너리 클러스터 타입
100 10타입
101 101타입
1011 101타입
100011 1001타입
100011 1001타입
101 101타입
100011 1001타입
101 101타입
1000111 1001타입
10 10타입
101 101타입
10 10타입
10111 101타입
1011 101타입
1011 101타입
1011 101타입
1011 101타입
1011 101타입
1000 10타입
10000 10타입
제 3 단계로, 상기와 같이 확정된 바이너리 클러스터별 타입에 따라 상기에서 설명된 압축과정 및 부호화 과정을 수행한 결과는 표 2와 같다.
바이너리
클러스터
타입 압축연산
결과
비고 오리진비트 압축
효과
100 10타입 101 10타입이고, '10'은 아니므로, 압축 바이너리 클러스터의 최상위 비트 '10' 을제외한 나머지 비트를 1로 변화시켜 101타입으로 변환 0
101 101타입 10 101타입이므로, 자리내림을 통해 10타입으로 변화시킴, 단 실제 압축 바이너리 클러스터의 값이 '101' 일 경우에는 오리진비트를 위치시키고자 하는 오리진 스택에 '1'을 쌓는다. 1 -1+1=0
1011 101타입 100 101타입이고, 원본 바이너리 클러스터가 '101'이 아니므로, 자리내림을 통해 10타입으로 변화시킴, -1
100011 1001타입 100011 1001타입 이므로 별도의 연산과정 없이 그대로 부호화 0
100011 1001타입 100011 1001타입 이므로 별도의 연산과정 없이 그대로 부호화 0
101 101타입 10 101타입이므로, 자리내림을 통해 10타입으로 변화시킴, 단 실제 압축 바이너리 클러스터의 값이 '101'일 경우에는 오리진 스택에 '1' 을 쌓는다. 1 -1+1=0
100011 1001타입 100011 1001타입 이므로 별도의 연산과정 없이 그대로 부호화 0
101 101타입 10 101타입이므로, 자리내림을 통해 10타입으로 변화시킴, 단 실제 압축 바이너리 클러스터의 값이 '101'일 경우에는 오리진 스택에 '1'을 쌓는다. 1 -1+1=0
1000111 1001타입 1000111 1001타입 이므로 별도의 연산과정 없이 그대로 부호화 0
10 10타입 10 10타입인데, 압축 바이너리 클러스터가 '10'이므로 그대로 두되, 오리진 스택에 '0'을 쌓음. 0 0+1=1
101 101타입 10 101타입이므로, 자리내림을 통해 10타입으로 변화시킴, 단 실제 압축 바이너리 클러스터의 값이 '101'일 경우에는 오리진 스택에 '1' 을 쌓는다. 1 -1+1=0
10 10타입 10 10타입인데, 압축 바이너리 클러스터가 '10'이므로 그대로 두되, 오리진 스택에 '0'을 쌓음. 0 0+1=1
10111 101타입 1000 101타입이고, 압축 바이너리 클러스터가 '101' 이 아니므로, 자리내림을 통해 10타입으로 변화시킴, -1
1011 101타입 100 101타입이고, 압축 바이너리 클러스터가 '101' 이 아니므로, 자리내림을 통해 10타입으로 변화시킴 -1
1011 101타입 100 101타입이고, 압축 바이너리 클러스터가 '101'이 아니므로, 자리내림을 통해 10타입으로 변화시킴 -1
1011 101타입 100 101타입이고, 압축 바이너리 클러스터가 '101'이 아니므로, 자리내림을 통해 10타입으로 변화시킴 -1
1011 101타입 100 101타입이고, 압축 바이너리 클러스터가 '101'이 아니므로, 자리내림을 통해 10타입으로 변화시킴 -1
1011 101타입 100 101타입이고, 압축 바이너리 클러스터가 '101'이 아니므로, 자리내림을 통해 10타입으로 변화시킴 -1
1000 10타입 1011 10타입이고, '10'이 아니므로, 압축 바이너리 클러스터의 최상위 비트 '10' 을 제외한 나머지 비트를 1로 변화시켜 101타입으로 변환 0
10000 10타입 10000
(압축하지 않음)
마지막 바이너리 클러스터는 어떠한 타입의 경우에도 압축하지 않음
한편, 본 실시례, 그리고 이후에서는 제 1 오리진비트는 "1"로, 제 2 오리진비트는 "0"으로 예시하나, 이에 한하지 않고, 제 1 오리진비트는 "0"으로, 제 2 오리진비트는 "1"로 할 수 있다.
상기와 같이 압축을 수행할 당시에는, 원본 이진데이터를 바이너리 클러스터 별로 분리하고, 그 타입에 따라 다음의 5가지 시나리오에 따른 압축연산을 수행할 수 있다.
시나리오 1은 10타입이고, "10"은 아니므로, 원본 바이너리 클러스터의 최상위 비트 "10"을 제외한 나머지 비트를 1로 변화시켜 101타입으로 변환시킨다.
시나리오 2는 10타입인데, 원본 바이너리 클러스터가 "10"이므로, 그대로 압축 바이너리 클러스터로 하고, 후속 압축 바이너리 클러스터의 "10" 다음에 제 2 오리진비트 "0"을 삽입한다.
시나리오 3은 101타입인데, 원본 바이너리 클러스터의 값이 "101"일 경우, 자리내림을 통해 10타입으로 변화시키고, 후속 압축 바이너리 클러스터의 "10" 다음에 네 1 오리진비트 "1"을 삽입한다.
시나리오 4는 101타입이고, 원본 바이너리 클러스터가 "101"이 아니므로, 압축연산을 통해 1비트 감소된 10타입으로 변화시킨다.
시나리오 5는 1001타입이므로 별도의 연산과정 없이 그대로 부호화한다.
시나리오 6은 마지막 바이너리 클러스터의 경우는 유형과 관계없이 압축하지 않고 그대로 압축 바이너리 클러스터로 한다.
결국 원본 이진데이터인 100 / 101 / 1011 / 100011 /100011 / 101 / 100011 / 101 / 1000111 / 10 / 101 / 10 / 10111 / 1011 / 1011 / 1011 / 1011 / 1011 / 1000 / 10000를 상기한 바와 같은 과정을 거치면 아래의 최종 압축 데이터로 변환된다. 아래에서 붉은색 박스안의 1비트 값이 직전 압축 바이너리 클러스터가 "10"일 경우에 다음 압축 바이너리 클러스터의 "10" 다음에 삽입된 제 1 또는 제 2 오리진비트가 된다.
Figure 112015113405262-pat00001
최종 압축 이진데이터는 아래와 같다. 여기서 이해를 돕기 위한 클러스터 사이를 띄었으나, 실제 데이터는 연결되어 있다.
101 10 1010 100011 100011 10 1010011 10 10100111 10 100 101 10000 100 100 100 100 100 1011 10000
이는 오리진비트의 삽입으로 비트수가 6비트 증가함을 고려하더라도, 101타입 바이너리 클러스터가 1비트 감소된 10타입 바이너리 클러스터로 압축되면서 10비트 감소되므로, 전체적으로는 4비트가 감소한 수치가 된다. 또한 별도의 사전식 테이블이 불필요하고, 매우 빠른 속도로 압축연산과 압축해제 연산이 수행될 수 있다.
한편 도 2에서와 같이, 본 발명에 따른 이진데이터의 압축 방법뿐만 아니라, 후술하게 될 본 발명에 따른 이진데이터의 압축해제 방법에 사용되는 장치(10)는 예컨대, 데이터의 수신을 위한 수신부(11)와, 수신부(11)에 수신된 데이터, 특히 이진데이터의 압축 방법이나 압축해제 방법을 수행하는 마이컴(12)과, 마이컴(12)에 의해 압축이나 압축해제된 이진데이터를 송신하는 송신부(13)와, 마이컴(12)에 의해 압축이나 압축해제되거나, 수신부(11)에 의해 수신된 이진데이터를 저장하는 메모리부(14)를 포함할 수 있다. 또한 본 발명에서 전송은 수신부(11)에 의해 다른 장치로 전송하는 것뿐만 아니라, 메모리부(14)에 저장하기 위하여 전송하는 것도 포함할 수 있다.
도 3은 본 발명의 일 실시례에 따른 이진데이터 압축해제 방법을 도시한 흐름도이다.
도 3을 참조하면, 본 발명의 일 실시례에 따른 이진데이터 압축해제 방법은 상기한 이진데이터 압축 방법에 의하여 압축된 이진데이터를 압축해제하는 방법으로서, 앞서 설명한 본 발명에 따른 이진데이터 압축 방법에 의해 압축된 이진데이터의 압축 해제를 위한 방법으로서, 압축된 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "10"을 처음 만날 때마다 "10"의 앞에서 분할하여, 압축 바이너리 클러스터를 구분하되, 상기 압축 바이너리 클러스터는 상기 제 1 및 제 2 오리진비트를 제거하는 단계(S21)와, 상기 압축 바이너리 클러스터를 "10"으로 시작하고 나머지가 1개 이상의 "1"로만 이루어지는 101타입, "10"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"으로만 이루어지는 10타입, 그리고 "100"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"이 나오고 이어서 1개 이상의 "1"이 나오는 1001타입으로 구분하는 단계(S22)와, 상기 101타입의 압축 바이너리 클러스터에 대하여 "10" 다음의 "1"을 "0"으로 비트반전하는 단계(S23)와, 상기 10타입의 압축 바이너리 클러스터에 대하여 상위비트로 숫자를 올려주도록 임의의 이진수로 더해지는 자리올림을 하거나, 비트반전후 최상위비트에 "1"을 부가하여, 상기 101타입과 동일 형식의 바이너리 클러스터를 생성하되(S25), 상기 10타입의 압축 바이너리 클러스터가 "10"으로 이루어지면서(S24) 후속하는 압축 바이너리 클러스터의 "10" 다음에 제거한 이진수인 제 1 오리진비트가 존재했던 경우(S26) "101"로 복호화하고(S27), 상기 10타입의 압축 바이너리 클러스터가 "10"으로 이루어지면서 후속하는 압축 바이너리 클러스터의 "10" 다음에 상기 제 1 오리진비트와 상이함과 아울러 제거한 이진수인 제 2 오리진비트가 존재했던 경우(S26) 그대로 유지하는 단계(S28)와, 상기 1001타입의 압축 바이너리 클러스터에 대하여 그대로 유지하는 단계(S29)를 포함할 수 있다. 여기서, 자리올림은 이진수에 대하여 상위비트로 숫자를 올리는 캐리업 이벤트를 발생시키도록 더해지는 이진수를 10타입의 압축 바이너리 클러스터에 더할 수 있다. 또한 비트반전후 이진수 부가는 10타입의 압축 바이너리 클러스터를 비트반전후, 최상위비트에 1을 부가할 수 있다. 한편, 압축 바이너리 클러스터 중에서 최종의 압축 바이너리 클러스터는 그대로 유지하는 단계를 더 포함할 수 있다.
본 발명에 따른 이진데이터 압축해제 방법을 다시 상세히 설명하면 아래와 같다. 먼저 복호화과정 제 1 단계로서, 최초 수신받은 압축된 이진데이터의 최상위 비트에서 "10"을 만났다면, 다음 "10"을 수신받을 때까지 계속 데이터를 받는다. 압축결과데이터에서 "10"을 수신받고, 다음 "10"을 수신받을 때까지 데이터를 우선 받는다.
10110..
상기 다음 수신받은 "10" 전의 이진데이터를 구분하면 아래와 같다(S21).
"101"/ "10"
구분된 "101"이 첫번째 압축 바이너리 클러스터가 된다(S22).
이는 101타입 압축 바이너리 클러스터이며, 압축과정의 역과정에 따라 101타입 압축 바이너리 클러스터는 "10" 다음의 나머지 "1"들을 모두 "0"으로 변환시켜서, 10타입 바이너리 클러스터로 압축해제된다(S23). 물론 이때에는 압축해제되어도 비트수의 변화가 생기지는 않는다. 즉, "101"은 "100"으로 압축해제된다.
이제 다음으로 계속 데이터를 수신받으면서 다시 "10"을 만날 때까지 계속진행한다.
1011010..
상기 다음 수신받은 "10"전의 이진데이터를 구분하면 아래와 같다.
"101"/ "10"/ "10"
두번째 압축 바이너리 클러스터 "10"을 획득하게 된다.
압축 바이너리 클러스터 "10"은 본 발명에서 특별하게 취급되는데, "101"로 압축해제 할지, "10"으로 압축해제 할지를 위해서, 현재 수신된 "10"이 세번째 압축 바이너리 클러스터의 최상위 2비트인 "10"이므로, 추가로 1비트를 더 읽어들이는데 이것이 바로 첫번째 오리진비트, 즉 제 1 오리진비트이다.
1011010 1 ..
상기처럼 제 1 오리진비트는 "1"일 것이므로, 두번째 압축 바이너리 클러스터 "10"은 101타입의 "101"로 압축해제 된다.
이제 다음 세번째 압축 바이너리 클러스터의 압축해제를 위해 계속 비트를 읽어들이는데, 이때 아래에서와 같이 방금 읽어들인 첫번째 오리진비트는 압축 바이너리 클러스터 구분을 위한 기준이 되어서는 안되고 무시된다. 다음 비트(즉 아래와 같이 녹색으로 표기된 비트)를 읽어들이면 "0"인데, 첫번째 읽어들인 오리진비트의 "1"과 연결되어 "10"이 되어서 아래처럼 네번째 압축 바이너리 클러스터의 시작점처럼 인식되어서는 안된다.
Figure 112015113405262-pat00002
다음과 같이 첫번째 오리진비트 "1"을 무시하면, 읽어들인 "0"만으로는 네번째 압축 바이너리 클러스터를 식별할 수 없으므로, 계속 다음 비트들을 읽어들여야 한다.
Figure 112015113405262-pat00003
이후 2비트를 더 읽어가게 되면, 다시 "10"을 만나고 아래와 같이 네번째 압축 바이너리 클러스터의 시작점임을 알 수 있다. 그리고 세번째 압축 바이너리 클러스터가 자연스럽게 분리되며, 세번째 압축 바이너리 클러스터내의 "10" 다음의 "1"(붉은색 표기)은 두번째 압축 바이너리 클러스터의 압축해제를 위한 오리진비트이므로 무시되어 세번째 압축 바이너리 클러스터는 "100"으로 식별된다.
Figure 112015113405262-pat00004
세번째 압축 바이너리 클러스터 "100"은 10타입이고, 이를 압축해제하면, 101타입으로 압축해제되는데, 방법은 압축과정의 역과정으로 먼저 압축 바이너리 클러스터를 비트반전하면, "011"이고, 이 결과의 최상위 비트앞에 "1"을 부가하여, 101타입으로 변환하면서 압축해제 된다. 즉, "100"은 "1011"로 압축해제 된다.
다음으로 계속 데이터를 읽어서 네번째와 다섯번째 압축 바이너리 클러스터를 아래와 같이 식별할 수 있다.
Figure 112015113405262-pat00005
네번째 압축 바이너리 클러스터는 "100011"로서 1001타입 압축 바이너리 클러스터이다. 압축과정의 역과정에 따라 1001타입압축 바이너리 클러스터는 별도의 연산없이 바로 그 자체 그대로 바이너리 클러스터로 압축해제 되어, "100011"이 압축해제 데이터가 된다.
이와 같은 과정중에 10번째~13번째 압축 바이너리 클러스터의 압축과정을 조금 더 상세히 설명하겠다. 이 구간은 압축 바이너리 클러스터가 모두 "10"인 구간이 연속되어 있고 오리진비트가 삽입되어서 보다 명확하게 기술을 설명하고자 함이다.
먼저, 아래 그림처럼 10번째 압축 바이너리 클러스터는 "10"이다.
Figure 112015113405262-pat00006
따라서 다음에서처럼 11번째 압축 바이너리 클러스터의 "10" 다음의 1비트를 더 읽어서 이를 오리진비트, 즉 제 2 오리진비트로 한다. 상술한 바와 같이 제 2 오리진비트는 압축 바이너리 클러스터를 인식하는데 사용되지 않고 무시되며, 오로지 직전 압축 바이너리 클러스터 "10"의 압축해제 방향만 알려줄 뿐이다. 제 2 오리진비트가 "0"이므로, 10번째 압축 바이너리 클러스터는 "10"으로 그 상태대로 압축해제 된다.
Figure 112015113405262-pat00007
이와 같은 과정으로 모든 압축된 수신데이터를 순차적으로 압축해제하여 최종 압축해제 데이터가 생성된다
이제 10번째 압축클러스터 해제를 위한 제 2 오리진비트는 없는 것처럼 무시하고 이어서 다음 12번째 압축 바이너리 클러스터를 인식하기 위해 계속 데이터를 읽어가면 아래와 같다. 붉은색으로 표시된 "0"은 무시된다. 따라서, 11번째 압축 바이너리 클러스터는 "10"이다.
Figure 112015113405262-pat00008
그런데, 11번째 압축 바이너리클러스터가 "10"으로 인식되므로, 12번째 압축 바이너리 클러스터의 최상위 "10" 다음의 1비트를 추가로 더 읽어들여 오리진비트로 하여 압축해제 방법을 결정한다. 아래 그림처럼 오리진비트는 "1"에 해당하는 제 1 오리진비트이므로, 11번째 압축 바이너리 클러스터 "10"은 비트반전한 뒤 최상위 비트 앞에 "1"을 추가한 "101"인 101타입 바이너리 클러스터로 압축해제 된다.
Figure 112015113405262-pat00009
다음으로, 13번째 압축 바이너리 클러스터를 구분하기 위하여 데이터를 계속 읽어들이면, 아래와 같고, 12번째 압축 바이너리 클러스터는 "10"으로 확인된다. 붉은색으로 표시된 제 1 오리진비트 "1"은 11번째 압축 바이너리 클러스터 "10"의 압축해제를 위해서만 사용되므로, 무시되기 때문이다.
Figure 112015113405262-pat00010
한편 상기처럼 12번째 압축 바이너리 클러스터도 "10"이므로, 13번째 압축 바이너리 클러스터의 "10" 다음에 1비트를 추가로 읽어들여 오리진비트로 하면 다음과 같고, 제 2 오리진비트인 "0"이므로, 12번째 압축 바이너리 클러스터 "10"은 그대로 "10"으로 압축해제 된다.
Figure 112015113405262-pat00011
다음으로 14번째 압축 바이너리 클러스터를 인식하기 위해 계속 데이터를 읽어들이면 다음과 같다. 열세번째 압축 바이너리 클러스터는 10타입의 "1000"이다. 중간의 오리진비트 "0"은 무시되기 때문이다. "10"이 아닌 10타입 압축 바이너리 클러스터는 101타입 바이너리 클러스터로 압축해제 되므로, "10111"로 압축해제 된다.
Figure 112015113405262-pat00012
상기와 같은 과정을 주의하면서 모든 압축 바이너리 클러스터에 대하여 압축해제하면 원본 이진데이터와 정확하게 일치되도록 복호화됨을 알 수 있다.
복호화 과정을 정리하면 다음과 같다. 압축된 이진데이터를 바이너리 클러스터 단위로 분리한 뒤, 각 바이너리 클러스터의 유형에 따라 다음과 같은 5가지 시나리오를 통해 복호화를 수행하면 된다.
시나리오 1은 101타입일 경우, 그대로 압축 바이너리 클러스터의 최상위 비트 "10"을 제외한 나머지를 "0"으로 만들어서, 10타입으로 변환시켜 복호화한다.
시나리오 2는 10타입이어서 자리올림 연산을 수행해야 하나, 압축 바이너리 클러스터 값이 "10"이므로 다음 압축 바이너리 클러스터의 "10" 다음에 위치한 오리진비트가 "0"이면, "10 "으로 복호화한다.
시나리오 3은 10타입이어서 자리올림 연산을 수행해야 하나, 압축 바이너리 클러스터 값이 "10"이므로 다음 압축 바이너리 클러스터의 "10" 다음에 위치한 오리진비트가 "1"이면, "101"으로 복호화한다.
시나리오 4는 10타입이나, 압축 바이너리 클러스터 값이 "10"이 아닐 경우, 자리올림 연산을 수행한다.
시나리오 5는 1001타입이므로 별도의 복호화를 위한 연산처리없이 그대로 사용된다.
시나리오 6은 최종의 압축 바이너리 클러스터는 그상태 그대로 바이너리 클러스터로 압축해제된 것으로 간주한다.
한편, 시나리오 2 및 3은 부호화 과정에서 오리진비트에 할당하는 값을 "0", "1"을 그 반대의 경우로 하였을 때는, 오리진비트의 값에 따라 대응하는 시나리오는 시나리오 2 및 3의 역으로 진행하면 된다.
참고로 자리올림 연산이란 아래와 같다.
예를 들어, 이진수 100에서 이진수 1을 더하면 그 결과는 101이 되는데, 이 경우 덧셈 후의 101은 덧셈 전의 100과 비교하여 자리올림 현상이 발생하지 않는다. 즉, 덧셈을 위하여 윗자리로 숫자를 올려주는 현상인 캐리업 이벤트가 발생하지 않는다. 반면, 이진수 10에 이진수 11을 더하면 그 결과는 101이 되는데, 이 경우 덧셈 후의 101은 덧셈 전의 10과 비교하여 자리올림 현상, 즉 캐리업 이벤트가 발생한 것이다. 이를 통해 10으로부터 자리올림하여 101이라는 결과가 얻어진다. 이 캐리업 이벤트는 원래 숫자의 비트수 자체가 커지는 경우뿐만 아니라, 내부에서 일어나는 최초의 자리올림 현상까지 포함하는 개념으로 사용된다. 즉, 이진수 101에 이진수 1을 더하면 110이 되는 경우와 같이, 첫번째 자리에서 자리올림이 발생한 것도 101에 1이라는 캐리키를 이용하여 자리올림인 캐리업 이벤트가 발생한 것으로 본다.
또한, 원래 이진수에 대하여 캐리업 이벤트를 일으키도록 하기 위하여 덧셈을 하는 이진수는 제 2 캐리포인트의 위치를 시점으로 하여 상위비트 방향으로 최소 개수의 1로만 이루어진 이진수(예를 들어, 1, 11, 111, 1111, ...)를 말하며, 이 또한 "캐리키"라고 할 수 있다. 예를 들어 이진수 11의 경우에는 1을 더하면 100로 캐리업 이벤트가 발생하여 이 때에는 캐리키가 1이 된다. 하지만, 110의 경우에는 1을 더하더라도 캐리업 이벤트가 발생하지 않고 11을 더해야만 1001이 되어 캐리업 이벤트가 발생하므로 이 때 캐리키는 11이 된다.
이러한 캐리키는 압축 방법에서 사용된 캐리키와 동일한 것으로 미리 정해지거나 설정될 수 있다. 또한 상기한 자리올림 단계(S25)를 대신하여, 비트반전후 이진수 부가를 수행할 수 있다. 이러한 자리올림 단계(S25)와 이를 대신하는 비트반전후 이진수 부가 단계 중 어느 단계를 사용할지는 압축 방법에서 채택한 자리내림 단계 또는 이진수 제거후 비트반전 단계에 상응하도록 정해질 수 있다. 비트반전후 이진수 부가는 10타입의 압축 바이너리 클러스터를 비트반전후, 최상위비트에 1을 부가함으로써 수행될 수 있다.
또한 압축 바이너리 클러스터 중에서 최종의 압축 바이너리 클러스터는 그대로 유지하게 된다.
본 실시례에서 이진데이터가 10으로 시작됨을 예로 들었으며, 이와 같이 10으로 시작되는 이진데이터에 적용할 수 있으며, 이와 다른 경우, 즉 10으로 시작되지 않은 이진데이터에 대해서는 일례로 최초 바이너리 클러스터를 그대로 유지하여 최초 압축 바이너리 클러스터로 하는 압축 과정을 수행할 수 있고, 최초 압축 바이너리 클러스터를 그대로 유지하여 최초 바이너리 클러스터로 하는 압축 해제 과정을 수행할 수 있다. 또한 10으로 시작되지 않는 이진데이터에 대해서는 다른 예로서 최초 바이너리 클러스터에 이진수 "10"을 부가하여 이진데이터가 10으로 시작하도록 한 다음, 101타입, 10타입 및 1001타입에 따라 압축 과정을 수행할 수 있고, 압축해제에서는 10타입, 101타입 및 1001타입에 따라 압축해제 후 최초 바이너리 클러스터에 부가된 10을 제거할 수 있다. 이때, 최초 바이너리 클러스터에 "10"이 부가된 사실을 나타내는 특정의 이진데이터를 미리 송신하거나, 최초 바이너리 클러스터 등의 정해진 위치에 부가할 수도 있다.
이와 같은 본 발명에 따른 이진데이터 압축 및 압축해제 방법에 따르면, 압축 및 압축해제를 위한 처리 속도를 향상시킬 수 있고, 압축 및 압축해제의 결과값에 대한 신뢰성을 높일 수 있으며, 이진데이터 전송의 실질적인 트래픽을 절감할 수 있다.
이와 같이 본 발명에 대해서 첨부된 도면을 참조하여 설명하였으나, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 수정 및 변형이 이루어질 수 있음은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시례에 한정되어서는 아니되며, 후술하는 특허청구범위뿐만 아니라 이러한 특허청구범위와 균등한 것들에 의해 정해져야 한다.
11 : 수신부 12 : 마이컴
13 : 송신부 14 : 메모리부

Claims (8)

  1. 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "10"을 처음 만날 때마다 "10"의 앞에서 분할하여, 바이너리 클러스터로 구분하는 단계;
    상기 바이너리 클러스터를 "10"으로 시작하고 나머지가 1개 이상의 "1"로만 이루어지는 101타입, "10"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"으로만 이루어지는 10타입, 그리고 "100"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"이 나오고 이어서 1개 이상의 "1"이 나오는 1001타입으로 구분하는 단계;
    상기 101타입 바이너리 클러스터에 대하여, 상위비트로부터 숫자를 빌려오도록 임의의 이진수로 빼주는 자리내림을 하거나, 최상위비트를 제거후 비트반전하여, 상기 10타입과 동일 형식의 압축 바이너리 클러스터를 생성하되, 상기 101타입 바이너리 클러스터가 "101"로 이루어지는 경우, 상기 "101" 다음에 오는 바이너리 클러스터로부터 생성된 압축 바이너리 클러스터에서 "10" 다음에 이진수인 제 1 오리진비트를 추가하는 단계;
    상기 10타입 바이너리 클러스터에 대하여 "10" 다음의 "0"을 "1"로 비트반전하되, 상기 10타입 바이너리 클러스터가 "10"으로 이루어지는 경우, 그대로 유지함과 아울러 상기 "10" 다음에 오는 바이너리 클러스터로부터 생성된 압축 바이너리 클러스터에서 "10" 다음에 제 1 오리진비트와 상이한 이진수인 제 2 오리진비트를 추가하는 단계; 및
    상기 1001타입 바이너리 클러스터에 대하여 그대로 유지하는 단계:
    를 포함하는, 이진데이터 압축 방법.
  2. 청구항 1에 있어서,
    상기 자리내림은,
    이진수에 대하여 상위비트로부터 숫자를 빌려오는 캐리다운 이벤트를 발생시키도록 빼주는 이진수를 상기 101타입 바이너리 클러스터로부터 빼는, 이진데이터 압축 방법.
  3. 청구항 1에 있어서,
    상기 이진수 제거후 비트반전은,
    상기 101타입 바이너리 클러스터에서, 최상위 비트를 제거한 다음, 나머지를 비트반전하는, 이진데이터 압축 방법.
  4. 청구항 1에 있어서,
    상기 바이너리 클러스터 중에서 최종의 바이너리 클러스터는 그대로 유지하는 단계를 더 포함하는, 이진데이터 압축 방법.
  5. 청구항 1 내지 청구항 4 중 어느 한 항에 기재된 이진데이터 압축 방법에 의하여 압축된 이진데이터의 압축 해제 방법으로서,
    압축된 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "10"을 처음 만날 때마다 "10"의 앞에서 분할하여, 압축 바이너리 클러스터를 구분하되, 상기 압축 바이너리 클러스터는 상기 제 1 및 제 2 오리진비트를 제거하는 단계;
    상기 압축 바이너리 클러스터를 "10"으로 시작하고 나머지가 1개 이상의 "1"로만 이루어지는 101타입, "10"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"으로만 이루어지는 10타입, 그리고 "100"으로 시작하고 나머지는 0개 또는 1개 이상의 "0"이 나오고 이어서 1개 이상의 "1"이 나오는 1001타입으로 구분하는 단계;
    상기 101타입의 압축 바이너리 클러스터에 대하여 "10" 다음의 "1"을 "0"으로 비트반전하는 단계;
    상기 10타입의 압축 바이너리 클러스터에 대하여 상위비트로 숫자를 올려주도록 임의의 이진수로 더해지는 자리올림을 하거나, 비트반전후 최상위비트에 "1"을 부가하여, 상기 101타입과 동일 형식의 바이너리 클러스터를 생성하되, 상기 10타입의 압축 바이너리 클러스터가 "10"으로 이루어지면서 후속하는 압축 바이너리 클러스터의 "10" 다음에 제거한 이진수인 제 1 오리진비트가 존재했던 경우 "101"로 복호화하고, 상기 10타입의 압축 바이너리 클러스터가 "10"으로 이루어지면서 후속하는 압축 바이너리 클러스터의 "10" 다음에 상기 제 1 오리진비트와 상이함과 아울러 제거한 이진수인 제 2 오리진비트가 존재했던 경우 그대로 유지하는 단계; 및
    상기 1001타입의 압축 바이너리 클러스터에 대하여 그대로 유지하는 단계:
    를 포함하는, 이진데이터 압축해제 방법.
  6. 청구항 5에 있어서,
    상기 자리올림은,
    이진수에 대하여 상위비트로 숫자를 올리는 캐리업 이벤트를 발생시키도록 더해지는 이진수를 상기 10타입의 압축 바이너리 클러스터에 더하는, 이진데이터 압축해제 방법.
  7. 청구항 5에 있어서,
    상기 비트반전후 이진수 부가는,
    상기 10타입의 압축 바이너리 클러스터를 비트반전후, 최상위비트에 1을 부가하는, 이진데이터 압축해제 방법
  8. 청구항 5에 있어서,
    상기 압축 바이너리 클러스터 중에서 최종의 압축 바이너리 클러스터는 그대로 유지하는 단계를 더 포함하는, 이진데이터 압축해제 방법.
KR1020150163187A 2015-11-20 2015-11-20 이진데이터 압축 및 압축해제 방법 KR101700537B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150163187A KR101700537B1 (ko) 2015-11-20 2015-11-20 이진데이터 압축 및 압축해제 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150163187A KR101700537B1 (ko) 2015-11-20 2015-11-20 이진데이터 압축 및 압축해제 방법

Publications (1)

Publication Number Publication Date
KR101700537B1 true KR101700537B1 (ko) 2017-01-26

Family

ID=57992687

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150163187A KR101700537B1 (ko) 2015-11-20 2015-11-20 이진데이터 압축 및 압축해제 방법

Country Status (1)

Country Link
KR (1) KR101700537B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469100B2 (en) 2017-12-06 2019-11-05 Electronics And Telecommunications Research Institute Method for transmitting and receiving compressed data and apparatus for the same

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140136118A (ko) * 2013-05-20 2014-11-28 김정훈 이진데이터 압축 및 압축해제 장치와 방법
KR20150077194A (ko) * 2013-12-27 2015-07-07 김정훈 이진 데이터의 압축 및 복원 방법과 장치
KR20150093060A (ko) * 2014-02-06 2015-08-17 김정훈 이진 데이터의 압축 및 복원 방법과 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140136118A (ko) * 2013-05-20 2014-11-28 김정훈 이진데이터 압축 및 압축해제 장치와 방법
KR20150077194A (ko) * 2013-12-27 2015-07-07 김정훈 이진 데이터의 압축 및 복원 방법과 장치
KR20150093060A (ko) * 2014-02-06 2015-08-17 김정훈 이진 데이터의 압축 및 복원 방법과 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469100B2 (en) 2017-12-06 2019-11-05 Electronics And Telecommunications Research Institute Method for transmitting and receiving compressed data and apparatus for the same

Similar Documents

Publication Publication Date Title
US7375660B1 (en) Huffman decoding method
US7511639B2 (en) Data compression for communication between two or more components in a system
US8218645B2 (en) Method and apparatus for encoding and decoding by wavelet transform
US20090015441A1 (en) Data compression for communication between two or more components in a system
CN102368385A (zh) 后向块自适应Golomb-Rice编解码方法及装置
CN116016606B (zh) 一种基于智慧云的污水处理运维数据高效管理系统
CN104038232A (zh) 基于二次异或运算的测试数据压缩与解压缩方法
CN110769263A (zh) 一种图像压缩方法、装置及终端设备
CN104038233A (zh) 基于相邻位异或运算的测试数据压缩与解压缩方法
KR101700537B1 (ko) 이진데이터 압축 및 압축해제 방법
CN104380733A (zh) 视频量化参数编码方法、视频量化参数解码方法、设备、以及程序
CN105791832B (zh) 数据编码方法和数据解码方法及其系统
KR100647192B1 (ko) 데이터의 복원 시간을 단축하는 데이터 압축 장치 및 그방법
CN113630125A (zh) 数据压缩、编码解压缩方法、装置、电子设备及存储介质
CN105721882A (zh) 一种分离编解码的方法和系统
CN104471945A (zh) 小波变换编码/解码方法和装置
CN103746704B (zh) 基于双游程交替编码的芯片测试数据传输方法
Yokoo Asymptotic optimal lossless compression via the CSE technique
CN110120819B (zh) 一种布尔电路编码方法、装置及系统
CN112885364B (zh) 音频编码方法和解码方法、音频编码装置和解码装置
KR101549740B1 (ko) 이진 데이터의 압축 및 압축해제 방법과 장치
US8754791B1 (en) Entropy modifier and method
KR20170031868A (ko) 바이너리 클러스터의 이진수 위상정보를 이용한 이진데이터 실시간 압축을 위한 부호화 복호화 장치
WO2011162964A2 (en) System and method and computer program product for parameter estimation for lossless video compression
KR101733299B1 (ko) 이진데이터의 실시간 압축 및 압축해제 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant