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

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

Info

Publication number
KR101723336B1
KR101723336B1 KR1020160040281A KR20160040281A KR101723336B1 KR 101723336 B1 KR101723336 B1 KR 101723336B1 KR 1020160040281 A KR1020160040281 A KR 1020160040281A KR 20160040281 A KR20160040281 A KR 20160040281A KR 101723336 B1 KR101723336 B1 KR 101723336B1
Authority
KR
South Korea
Prior art keywords
binary
bit
significant bit
compressed
cluster
Prior art date
Application number
KR1020160040281A
Other languages
English (en)
Other versions
KR20160134480A (ko
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 김정훈
Publication of KR20160134480A publication Critical patent/KR20160134480A/ko
Application granted granted Critical
Publication of KR101723336B1 publication Critical patent/KR101723336B1/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
    • 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
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 "10"으로 시작하는 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "10"을 처음 만날 때마다 "10"의 앞에서 분할하여, 다수의 바이너리 클러스터로 구분하는 단계; 상기 바이너리 클러스터 각각을 "1"로 시작하고 나머지가 1개 이상의 연속된 "0"으로 구성되는 10타입, "10"으로 시작하고 나머지가 1개 이상의 연속된 "0" 그리고 이어서 1개 이상의 연속된 "1"로 이루어지는 1001타입, 그리고 "10"으로 시작하고 나머지가 1개 이상의 연속된 "1"로만 구성되는 101타입으로 구분하는 단계; 및 상기 바이너리 클러스터를 배열 순서대로 압축하여 전송하되, 상기 바이너리 클러스터를 상기 구분한 타입별로 상이한 압축 방식으로 압축한 압축바이너리 클러스터를 전송하는 단계;를 포함하도록 한 이진데이터 압축 및 압축 해제 방법에 관한 것이다.
본 발명에 따르면, 압축 및 압축 해제를 위한 처리 속도를 향상시킬 수 있고, 압축 및 압축 해제의 결과값에 대한 신뢰성을 높일 수 있으며, 이진데이터 전송의 실질적인 트래픽을 절감할 수 있다.

Description

이진데이터 압축 및 압축 해제 방법{Binary data compression and decompression method}
본 발명은 이진데이터 압축 및 압축 해제 방법에 관한 것으로서, 보다 상세하게는 처리 속도가 뛰어나고, 압축 및 압축 해제의 신뢰성이 뛰어난 이진데이터 압축 및 압축 해제 방법에 관한 것이다.
일반적으로, 이진수는 이진법으로 표현되는 수를 말하며, 0과 1로 나타내어지고, 컴퓨터 등에서 사용되는 데이터의 처리 및 표현에 사용된다.
이와 같은 이진수로 이루어진 이진데이터는 그 처리 속도 및 저장 용량 등을 고려하여 압축이 요구되는데, 종래의 이진데이터의 압축 및 압축 해제 방법으로는 한국공개특허 제10-1999-022960호의 "이진 코드 압축과 복원방법 및 병렬압축과 복원 프로세서"가 개시된 바 있는데, 이는 이진 코드의 압축 방법으로서, 코드화된 신호 비트 값과 직교 부호화 함수 값과의 연속 곱(serial multiplication), 이후 일정 시간 주기 동안의 모든 곱(products)의 합산을 통한 초기 데이터 흐름의 변환을 포함하는 이진 코드 압축 방식에 있어서, 함수의 이산값이 부호화 함수로서 사용되며, 상기 함수는 주파수를 가진 가우시안 펄스 형태인 구분적 연속 함수이며, 부호화 변환로서 Duamel 시퀀스의 계산법이 사용되며, 데이터 입력 흐름과 부호화 함수의 이산값은 상기 시퀀스의 독립변수로 사용된다.
그러나, 이와 같은 종래의 이진데이터의 압축 방법은 데이터의 압축 및 압축 해제에 대한 처리 과정이 복잡하여 처리 속도 향상에 제한이 따르고, 결과값에 대해서 신뢰성을 높이기가 어렵다는 문제점을 가지고 있었다.
상기한 바와 같은 종래 기술의 문제점을 해결하기 위하여, 본 발명은 압축 및 압축 해제를 위한 처리 속도를 향상시킬 수 있고, 압축 및 압축 해제의 결과값에 대한 신뢰성을 높이도록 하는데 목적이 있다.
본 발명의 다른 목적들은 이하의 실시례에 대한 설명을 통해 쉽게 이해될 수 있을 것이다.
상기한 바와 같은 목적을 달성하기 위해, 본 발명의 일측면에 따르면, "10"으로 시작하는 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "10"을 처음 만날 때마다 "10"의 앞에서 분할하여, 다수의 바이너리 클러스터로 구분하는 단계; 상기 바이너리 클러스터 각각을 "1"로 시작하고 나머지가 1개 이상의 연속된 "0"으로 구성되는 10타입, "10"으로 시작하고 나머지가 1개 이상의 연속된 "0" 그리고 이어서 1개 이상의 연속된 "1"로 이루어지는 1001타입, 그리고 "10"으로 시작하고 나머지가 1개 이상의 연속된 "1"로만 구성되는 101타입으로 구분하는 단계; 및 상기 바이너리 클러스터를 배열 순서대로 압축하여 전송하되, 상기 바이너리 클러스터를 상기 구분한 타입별로 상이한 압축 방식으로 압축한 압축바이너리 클러스터를 전송하는 단계;를 포함하는, 이진데이터 압축 방법이 제공된다.
상기 압축바이너리 클러스터를 전송하는 단계는, 상기 바이너리 클러스터가 상기 10타입인 경우, 비트수를 2로 나누어 몫과 나머지를 획득하여, 상기 나머지에 해당하는 이진수 또는 상기 나머지에 해당하는 이진수를 비트반전한 이진수를 상기 몫의 갯수만큼 연속되도록 배열한 압축바이너리 클러스터를 생성하여 전송할 수 있다.
상기 압축바이너리 클러스터를 전송하는 단계는, 상기 바이너리 클러스터가 상기 1001타입인 경우, 비트반전한 다음, 최상위 비트"0"을 제거하는 제 1 단계; 상기 제 1 단계를 마친 이진수에서 최상위 비트로부터 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 최하위 비트 아래로 이동시키고, 상기 헤더의 이동시마다 1씩 카운터를 증가시키는 제 2 단계; 상기 제 1 단계 및 상기 제 2 단계를 헤더의 비트 이동이 존재하지 않을 때까지 반복 수행하는 제 3 단계; 상기 제 3 단계에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경하는 제 4 단계; 및 상기 제 4 단계를 마친 결과에 상기 제 2 단계의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 그대로 전송하는 제 5 단계;를 포함할 수 있다.
상기 압축바이너리 클러스터를 전송하는 단계는, 상기 바이너리 클러스터가 상기 1001타입인 경우, 비트반전한 다음, 최상위 비트"0"을 제거하는 제 1 단계; 상기 제 1 단계를 마친 이진수에서 최상위 비트로부터 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 최하위 비트 아래로 이동시키고, 상기 헤더의 이동시마다 1씩 카운터를 증가시키는 제 2 단계; 상기 제 1 단계 및 상기 제 2 단계를 헤더의 비트 이동이 존재하지 않을 때까지 반복 수행하는 제 3 단계; 상기 제 3 단계에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경하는 제 4 단계; 및 상기 제 4 단계를 마친 결과에 상기 제 2 단계의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 비트반전하여 전송하는 제 5 단계;를 포함할 수 있다.
상기 압축바이너리 클러스터를 전송하는 단계는, 상기 바이너리 클러스터가 상기 101타입인 경우, "10" 다음에 "0"을 삽입하는 제 6 단계; 상기 제 6 단계를 마친 이진수를 비트반전한 다음, 최상위 비트"0"을 제거하는 제 7 단계; 상기 제 7 단계를 마친 이진수에서 최상위 비트로부터 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 최하위 비트 아래로 이동시키고, 상기 헤더의 이동시마다 1씩 카운터를 증가시키는 제 8 단계; 상기 제 7 단계 및 상기 제 8 단계를 헤더의 비트 이동이 존재하지 않을 때까지 반복 수행하는 제 9 단계; 상기 제 9 단계에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경하는 제 10 단계; 및 상기 제 10 단계를 마친 결과에 상기 제 8 단계의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 상기 1001타입의 압축 바이너리 클러스터와 구분되도록 비트반전하여 전송하는 제 11 단계;를 포함할 수 있다.
상기 압축바이너리 클러스터를 전송하는 단계는, 상기 바이너리 클러스터가 상기 101타입인 경우, "10" 다음에 "0"을 삽입하는 제 6 단계; 상기 제 6 단계를 마친 이진수를 비트반전한 다음, 최상위 비트"0"을 제거하는 제 7 단계; 상기 제 7 단계를 마친 이진수에서 최상위 비트로부터 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 최하위 비트 아래로 이동시키고, 상기 헤더의 이동시마다 1씩 카운터를 증가시키는 제 8 단계; 상기 제 7 단계 및 상기 제 8 단계를 헤더의 비트 이동이 존재하지 않을 때까지 반복 수행하는 제 9 단계; 상기 제 9 단계에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경하는 제 10 단계; 및 상기 제 10 단계를 마친 결과에 상기 제 8 단계의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 상기 1001타입의 압축 바이너리 클러스터와 구분되도록 그대로 전송하는 제 11 단계;를 포함할 수 있다.
본 발명의 다른 측면에 따르면, 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "01"을 처음 만날 때마다 "01"의 다음비트 사이에서 분할하여, 다수의 바이너리 클러스터로 구분하는 단계; 상기 바이너리 클러스터 각각을 "0"으로 시작하고 나머지가 1개 이상의 연속된 "0"으로 구성되는 A타입, 1개 이상의 연속된 "1" 그리고 1개의 “0” 그리고 1개의 "1"로 이루어지는 B타입, 그리고 1개 이상의 연속된 “1” 그리고 2개 이상의 연속된 “0” 그리고 1개의 "1"로 구성되는 C타입으로 구분하는 단계; 및 상기 바이너리 클러스터를 배열 순서대로 압축하여 전송하되, 상기 바이너리 클러스터를 상기 구분한 타입별로 상이한 압축 방식으로 압축한 압축바이너리 클러스터를 전송하는 단계;를 포함하는, 이진데이터 압축 방법이 제공된다.
상기 압축바이너리 클러스터를 전송하는 단계는, 상기 바이너리 클러스터가 상기 A타입인 경우, 10타입으로 최상위와 최하위의 방향성을 바꾸어서 사상하여 압축하는 단계; 상기 바이너리 클러스터가 상기 B타입인 경우, 101타입으로 최상위와 최하위의 방향성을 바꾸어서 사상하여 압축하는 단계; 및 상기 바이너리 클러스터가 상기 C타입인 경우, 1001타입으로 최상위와 최하위의 방향성을 바꾸어서 사상하여 압축하는 단계;를 포함할 수 있다.
상기 압축 바이너리 클러스터의 전송은, 맨체스터 코딩 전송방식을 이용할 수 있다.
본 발명의 다른 측면에 따르면, 상기 압축바이너리 클러스터를 순차적으로 수신받으면서, 상기 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계; 및 상기 압축바이너리 클러스터가 "0"으로만 이루어지거나 "1"로만 이루어지는 경우, 미리 정해진 바에 따라 상기 압축바이너리 클러스터를 이루는 단일 비트의 이진수를 나머지로 획득하거나, 상기 압축바이너리 클러스터를 이루는 단일 비트의 이진수를 비트반전한 이진수를 나머지로 획득하고, 상기 압축바이너리 클러스터의 비트수를 몫으로 획득하며, 상기 몫에 2를 곱한 값에 상기 나머지를 더한 결과값에 해당하는 비트수를 가짐과 아울러, "1"로 시작하고 나머지가 1개 이상의 연속된 "0"으로 구성되는 바이너리 클러스터를 생성하는 단계;를 포함하는, 이진데이터 압축 해제 방법이 제공된다.
본 발명의 또 다른 측면에 따르면, 상기 압축바이너리 클러스터를 순차적으로 수신받으면서, 상기 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계; 상기 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "0"으로 시작하는 경우, 상기 압축바이너리 클러스터에서 최상위 비트로부터 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득하는 제 21 단계; 상기 시드의 최상위 비트 앞에 "1"을 추가하는 제 22 단계; 상기 제 22 단계를 마친 이진수를 비트반전하고 최상위 비트 앞에 "1"을 추가하는 제 23 단계; 상기 제 23 단계를 마친 이진수에서 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 하위부에 해당하는 "1"로만 구성된 테일을 최상위 비트 앞으로 이동시킨 다음, 상기 카운터를 나타내는 이진수에서 1을 차감하는 제 24 단계: 상기 제 23 단계 및 상기 제 24 단계를 반복하여 상기 카운터가 0이 될 때까지 반복 수행하는 제 25 단계; 및 상기 제 25 단계를 마친 이진수를 비트반전한 다음, 최상위 비트 앞에 "1"을 추가하는 제 26 단계;를 포함하는, 이진데이터 압축 해제 방법이 제공된다.
본 발명의 또 다른 측면에 따르면, 상기 압축바이너리 클러스터를 순차적으로 수신받으면서, 상기 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계; 상기 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "0"으로 시작하는 경우, 상기 압축바이너리 클러스터를 비트반전하여 최상위 비트로부터 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득하는 제 21 단계; 상기 시드의 최상위 비트 앞에 "1"을 추가하는 제 22 단계; 상기 제 22 단계를 마친 이진수를 비트반전하고 최상위 비트 앞에 "1"을 추가하는 제 23 단계; 상기 제 23 단계를 마친 이진수에서 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 하위부에 해당하는 "1"로만 구성된 테일을 최상위 비트 앞으로 이동시킨 다음, 상기 카운터를 나타내는 이진수에서 1을 차감하는 제 24 단계: 상기 제 23 단계 및 상기 제 24 단계를 반복하여 상기 카운터가 0이 될 때까지 반복 수행하는 제 25 단계; 및 상기 제 25 단계를 마친 이진수를 비트반전한 다음, 최상위 비트 앞에 "1"을 추가하는 제 26 단계;를 포함하는, 이진데이터 압축 해제 방법이 제공된다.
본 발명의 또 다른 측면에 따르면, 상기 압축바이너리 클러스터를 순차적으로 수신받으면서, 상기 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계; 상기 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "1"로 시작하는 경우, 상기 바이너리 클러스터를 비트반전하여, 최상위 비트에서 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득하는 제 27 단계; 상기 시드의 최상위 비트에 "1"을 추가하는 제 28 단계; 상기 제 28 단계를 마친 이진수를 비트반전하고, 최상위 비트 앞에 "1"을 추가하는 제 29 단계; 상기 제 29 단계를 마친 이진수에서 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1"사이를 기준으로 분할하여 하위부에 해당하는 "1"로만 구성된 테일을 최상위 비트 앞으로 이동시킨 다음, 상기 카운터에서 1을 차감하는 제 30 단계; 상기 제 29 단계 및 상기 제 30 단계를 상기 카운터가 0이 될 때까지 반복 수행하는 제 31 단계; 상기 제 31 단계를 마친 이진수를 비트반전한 다음 최상위 비트 앞에 "1"을 추가하는 제 32 단계; 및 상기 제 32 단계를 마친 이진수에서 최상위의 "10" 다음의 "0"을 제거하는 제 33 단계; 를 포함하는, 이진데이터 압축 해제 방법이 제공된다.
본 발명의 또 다른 측면에 따르면, 상기 압축바이너리 클러스터를 순차적으로 수신받으면서, 상기 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계; 상기 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "1"로 시작하는 경우, 상기 바이너리 클러스터에서 최상위 비트로부터 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득하는 제 27 단계; 상기 시드의 최상위 비트에 "1"을 추가하는 제 28 단계; 상기 제 28 단계를 마친 이진수를 비트반전하고, 최상위 비트 앞에 "1"을 추가하는 제 29 단계; 상기 제 29 단계를 마친 이진수에서 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1"사이를 기준으로 분할하여 하위부에 해당하는 "1"로만 구성된 테일을 최상위 비트 앞으로 이동시킨 다음, 상기 카운터에서 1을 차감하는 제 30 단계; 상기 제 29 단계 및 상기 제 30 단계를 상기 카운터가 0이 될 때까지 반복 수행하는 제 31 단계; 상기 제 31 단계를 마친 이진수를 비트반전한 다음 최상위 비트 앞에 "1"을 추가하는 제 32 단계; 및 상기 제 32 단계를 마친 이진수에서 최상위의 "10" 다음의 "0"을 제거하는 제 33 단계;를 포함하는, 이진데이터 압축 해제 방법이 제공된다.
본 발명에 따른 이진데이터 압축 및 압축 해제 방법에 의하면, 압축 및 압축 해제를 위한 처리 속도를 향상시킬 수 있고, 압축 및 압축 해제의 결과값에 대한 신뢰성을 높일 수 있으며, 이진데이터 전송의 실질적인 트래픽을 절감할 수 있다.
도 1은 본 발명의 일 실시례에 따른 이진데이터 압축 방법을 도시한 흐름도이다.
도 2는 본 발명의 일 실시례에 따른 이진데이터 압축 및 압축 해제 방법에 사용되는 장치를 도시한 구성도이다.
도 3은 본 발명의 일 실시례에 따른 이진데이터 압축 해제 방법을 도시한 흐름도이다.
본 발명은 다양한 변경을 가할 수 있고, 여러 가지 실시례를 가질 수 있는 바, 특정 실시례들을 도면에 예시하고, 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니고, 본 발명의 기술 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 식으로 이해되어야 하고, 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 하기 실시례에 한정되는 것은 아니다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 실시례를 상세히 설명하며, 도면 부호에 관계없이 동일하거나 대응하는 구성요소에 대해서는 동일한 참조 번호를 부여하고, 이에 대해 중복되는 설명을 생략하기로 한다.
도 1은 본 발명의 일 실시례에 따른 이진데이터 압축 방법을 도시한 흐름도이다.
도 1을 참조하면, 본 발명의 일 실시례에 따른 이진데이터 압축 방법은, "10"으로 시작하는 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "10"을 처음 만날 때마다 "10"의 앞에서 분할하여, 다수의 바이너리 클러스터로 구분하는 단계(S10), 바이너리 클러스터 각각을 "1"로 시작하고 나머지가 1개 이상의 연속된 "0"으로 구성되는 10타입, "10"으로 시작하고 나머지가 1개 이상의 연속된 "0" 그리고 이어서 1개 이상의 연속된 "1"로 이루어지는 1001타입, 그리고 "10"으로 시작하고 나머지가 1개 이상의 연속된 "1"로만 구성되는 101타입으로 구분하는 단계(S20)와, 바이너리 클러스터를 배열 순서대로 압축하여 전송하되, 바이너리 클러스터를 구분한 타입별로 상이한 압축 방식으로 압축한 압축바이너리 클러스터를 전송하는 단계를 포함할 수 있다.
이진데이터에 있어서, 특정할 수 있는 10으로 시작하는 부분부터 특정할 수 있는 위치의 비트까지의 이진수에 있어서 이러한 이진수를 편의상 원본 이진데이터라고 하면, 이때 특정 10으로 시작하는 부분은 최상위 비트일 수도 있다. 특정비트까지의 이진수라고 함에 있어서 특정비트는 최하위 비트일 수도 있다.
이러한 원본 이진데이터들을 "10" 앞에서 분리하여, 분리되는 이진수들을 바이너리 클러스터라고 할 수 있다. 아래와 같은 이진데이터를 예로 들면 다음과 같다.
....1010101101101110000010100011000111100111...
특정범위의 원본이진수 1010101101101110000010100011000111100111의 경우에 상기한 규칙에 따라 나누면, 아래와 같이 10개의 바이너리 클러스터로 나뉜다.
10/10/101/101/1011/100000/10/10001/1000111/100111
이러한 바이너리 클러스터들은 크게 3가지 부류로 나뉠 수 있다.
10타입의 바이너리 클러스터들은, "1"로 시작하고, 1개 이상의 연속된 "0"으로 구성된 바이너리 클러스터이다. 101타입의 바이너리 클러스터들은 "10"으로 시작하고 1개 이상의 연속된 "1"로 구성된 바이너리 클러스터이다. 1001타입의 바이너리 클러스터들은 "10"으로 시작하고, 1개 이상의 연속된 "0" 그리고 1개 이상의 연속된 "1"로 이루어진 바이너리 클러스터이다.
한편 다른 실시례로서, 이진데이터에 있어서 상기와 같이 바이너리 클러스터를 구분하는 방법과 동일선상에서, 원본 이진데이터에 있어서, 상위비트로부터 하위비트로 이동하면서 "01"을 만날 때마다 “01”의 다음비트 앞에서 분리하여, 분리되는 이진수들을 바이너리 클러스터라고 할 수 있다. 이와 같이 분할하면, 최상위 비트가 “0” 또는 “1”로 시작하는 것에 관계없이, 이를 고려치 않고도 압축전송이 가능하다는 잇점이 있다.
예를 들어, 아래와 같은 이진데이터를 예로 들면 다음과 같다.
0001010101101101110000010100011000111100111
원본이진수 0001010101101101110000010100011000111100111의 경우에 상기한 규칙에 따라 나누면, 아래와 같이 11개의 바이너리 클러스터로 나뉜다. “01”을 만날 때마다의 기준으로 나눌 때는 특히 마지막 바이너리 클러스터의 경우에는 “01”로 끝나지 않을 수도 있고 “01”로 끝날 수도 있다.
0001/01/01/01/101/101/11000001/01/0001/10001/111001/11
이러한 바이너리 클러스터들도 크게 3가지 부류로 나뉠 수 있다.
먼저 A타입 바이너리 클러스터는 "0"으로 시작하고, 1개 이상의 연속된 "1"로 구성된 바이너리 클러스터이다. 예를 들어, “01”, “001”, “0001”, “00001”, ... 등과 같으며, B타입 바이너리 클러스터는 1개 이상의 연속된 “1”에 이어서, 1개의 “0” 그리고 최하위에 1개의 “1”로 구성된 형태인데, 예를 들어, “101”, “1101”, “11101”, “111101”, ... 등과 같다.
마지막으로 C타입 바이너리 클러스터는 1개 이상의 연속된 “1”에 이어서 2개 이상의 연속된 “0” 그리고 마지막의 1개의 “1”로 구성된 형태인데, 예를 들어, “1001”, “1100001”, “111110000001”.... 등과 같은 형태이다.
이와 같은 형태에 있어서는 A타입, B타입 및 C타입 바이너리 클러스터들의 최상위와 최하위의 방향성을 바꾸어서 사상하여 대응시키면, 각기 10타입, 101타입, 1001타입과 같은 형태로 사상되므로, 이를 후술하게 될 바이너리 클러스터의 타입별로 압축을 수행한다.
Figure 112016031815537-pat00001
다른 실시례에 따를 경우, 이전의 일 실시례에 대하여 가지는 차이점은 마지막 바이너리 클러스터의 경우에 별도의 압축없이 전송을 할 수 있다는 점이며, 물론 최하위 비트에 “01”을 부가하여, 압축바이너리 클러스터로 압축하여 전송할 수도 있으나, 이때에는 복호화기에서 최종적으로 복호화한 뒤 부가된 “01”을 제거하는 과정이 필요하다.
그리고 복호화기에서는, 압축바이너리 클러스터를 해독하여, 10타입, 101타입, 1001타입 바이너리 클러스터로 복호화한 뒤, 최상위와 최하위의 방향성을 바꾸어서 해독하여 사상하면, A타입, B타입 및 C타입 바이너리 클러스터로 정확하게 복구할 수 있다. 특히 마지막 바이너리 클러스터의 경우에는, 별도의 압축이 없는 경우에는 그대로 원래의 바이너리 클러스터로 하여 압축해제 과정을 종료할 수 있다.
이렇게 10타입, 101타입 및 1001타입의 3가지 유형으로 분류되었을 때, 본 발명이 제안하는 압축방법은 아래와 같다.
압축바이너리 클러스터를 전송하는 단계는 바이너리 클러스터가 10타입인 경우, 비트수를 2로 나누어 몫과 나머지를 획득하여, 일례로서 나머지에 해당하는 이진수 또는 다른 예로서 나머지에 해당하는 이진수를 비트반전한 이진수를 몫의 갯수만큼 연속되도록 배열한 압축바이너리 클러스터를 생성하여 전송할 수 있다(S30). 이를 예로 들어 설명하면 다음과 같다.
10타입의 바이너리 클러스터는, "0"의 갯수를 N이라고 하면, 아래의 표 1에서와 같이, N+1 값을 2로 나눈 몫을 Q라고 하고 나머지를 R이라고 한다.
바이너리 클러스터 N N+1 Q R
10 1 2 1 0
100 2 3 1 1
1000 3 4 2 0
10000 4 5 2 1
100000 5 6 3 0
1000000 6 7 3 1
.... ... ... ... ...
이때, R 값의 비트값이 Q개 길이만큼 연속된 이진수를 압축바이너리 클러스터로 한다. 물론 실시예에 따라 R값의 비트반전된 값으로 Q개 길이만큼 연속된 이진수를 압축바이너리 클러스터로 할 수 있음은 물론이다. 이러한 압축바이너리 클러스터에 대한 비트반전 여부는 정확한 압축 해제를 위해 미리 약속으로 정할 수 있다.
또한 10타입 바이너리 클러스터 1000000의 경우, N=6이고, N+1=7이며, N+1을 2로 나눈 나머지 Q=3, R=1이므로, 압축바이너리 클러스터는 "111"이다.
100000의 경우 N=5이므로, N+1=6이고, Q=3, R=0이므로, 압축바이너리 클러스터는 "000"이다.
압축바이너리 클러스터를 전송하는 단계는 바이너리 클러스터가 1001타입인 경우, 비트반전한 다음, 최상위 비트"0"을 제거하는 제 1 단계(S41), 제 1 단계(S41)를 마친 이진수에서 최상위 비트로부터 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 최하위 비트 아래로 이동시키고, 헤더의 비트 이동시마다 1씩 카운터를 증가시키는 제 2 단계(S42), 제 2 단계(S42)를 헤더의 비트 이동이 존재하지 않을 때까지 반복 수행하는 제 3 단계(S43), 제 3 단계(S43)에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경하는 제 4 단계(S44) 및 제 4 단계(S44)를 마친 결과에 제 2 단계(S42)의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 그대로 전송하는 제 5 단계(S45)를 포함할 수 있다. 또한, 압축바이너리 클러스터를 전송하는 단계는 바이너리 클러스터가 1001타입인 경우, 상기한 제 1 내지 제 5 단계(S41~S45) 중에서 제 5 단계(S45)는 다른 예로서, 제 4 단계(S44)를 마친 결과에 제 2 단계(S42)의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 비트반전하여 전송할 수 있다. 이러한 비트반전 여부는 압축 해제를 위하여 미리 약속으로 정해질 수 있다. 제 1 내지 제 5 단계(S41~S45)를 예로 들어 설명하되, 제 5 단계(S45)를 비트반전하지 않고 그대로 전송하는 경우를 예로 들어 설명하면 다음과 같다.
1001타입 바이너리 클러스터의 경우, "1" 다음에, 2개 이상의 "0"에 이어서 1개 이상의 "1"로 이루어진 이진수를 의미하는데, 아래의 표 2에서 예시한 형태들이다.
1001타입 바이너리 클러스터 예시
1001
10011
100111
1001111
10011111
100111111
1001111111
10011111111
100111111111
1001111111111
10011111111111
100111111111111
1001111111111111
10011111111111111
.....
10001
100011
1000111
10001111
100011111
1000111111
10001111111
100011111111
1000111111111
10001111111111
100011111111111
1000111111111111
10001111111111111
100011111111111111
.....
100001
1000011
10000111
100001111
1000011111
10000111111
100001111111
1000011111111
10000111111111
100001111111111
1000011111111111
10000111111111111
100001111111111111
.....
1000001
10000011
100000111
1000001111
10000011111
100000111111
1000001111111
10000011111111
100000111111111
1000001111111111
.....
1001 타입 바이너리 클러스터의 경우, 예를 들어 설명하면, "10001111"이라는 1001 타입 바이너리 클러스터는 제 1 단계로서, 아래에서와 같이, 비트반전을 수행한 뒤, 최상위 비트 "0"은 제거한다(S41).
10001111 ==> 01110000 ==> 1110000
제 2 단계로서, 제 1 단계의 압축결과에서 최상위 비트에서 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 아래에서와 같이 최하위 비트 아래로 이동시키고, 이러한 헤더의 비트 이동시마다 1씩 카운터를 증가시킨다(S42).
1110000 ==> 1000011, 카운터 1증가
제 3 단계로서, 제 1 및 제 2 단계를 계속 반복하다가, 제 1 단계의 압축결과 헤더의 비트 이동이 존재하지 않는 형태이면, 제 4 단계로 넘어간다(S43). 예시에서는 아래와 같이, 헤더 비트 이동이 3회 더 존재하였고, 압축 바이너리 클러스터가 "101"일 경우에는 제 1 단계 압축한 결과, 헤더의 비트 이동이 발생하지 않기 때문에, 제 1 단계 압축한 결과 "10"을 가지고 제 4 단계로 넘어간다.
[반복]
(제 1 단계) 1000011 ==>0111100 ==> 111100(비트반전을 수행한뒤, 최상위 비트 "0"은 제거한다.)
(제 2 단계) 111100==> 100111, 카운터 1증가(제 1 단계 압축결과에서 최상위 비트에서 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수를 헤더라고 하는데, 이 헤더를 최하위 비트 아래로 이동시킨다. 이러한 헤더의 비트 이동시마다 1씩 카운터를 증가시킨다.)
[반복]
(제 1 단계) 100111==> 011000 ==> 11000
(제 2 단계) 11000 ==> 10001, 카운터 1증가
[반복]
(제 1 단계) 10001 ==> 01110 ==> 1110
(제 2 단계) 1110 ==>1011, 카운터 1증가
[반복]
(제 1 단계)1011 ==> 0100 ==> 100(제 1 단계 마친 뒤 헤더가 존재하지 않으므로, 4 단계로 넘어감.)
제 4 단계는 제 3 단계에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경한다(S44). 즉 100 ==> 00이 된다. 제 3 단계에서 넘어올 때 카운터값은 4이다.
제 5 단계는 이제 제 4 단계의 압축이 끝나면, 그 결과에 이어서, 제 2 단계에서 카운터된 최종 헤더의 비트이동 횟수를 이진수로 이어서 붙인다(S45). 상기의 예에서는 헤더의 비트이동이 전체 4회 일어났으므로 4의 이진수 표현인 "100"을 제 4 단계 압축결과 "0"에 이어서 붙인 결과인 "00100"이 최종 압축바이너리 클러스터가 된다. 즉 "10001111"이라는 8비트의 바이너리 클러스터는 "00100"이라는 5비트의 압축바이너리 클러스터로 압축되는 것이다.
1001 타입 바이너리 클러스터의 경우, 다른 예로서 "100011"이라는 1001 타입 바이너리 클러스터를 방법에 따라 압축해 보면 아래와 같다.
제 1 단계에 따르면, 비트반전을 수행한 뒤, 최상위 비트 "0"은 제거함으로써, 100011 ==> 011100 ==> 11100 과정을 거친다(S41).
제 2 단계에 따르면, 제 1 단계의 결과 이진수를 11100 ==> 10011 과정을 거치고, 카운터 1을 증가한다. 즉 제 1 단계 압축결과에서 최상위 비트에서 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수를 헤더라고 하는데, 이 헤더를 최하위 비트 아래로 이동시킨다. 이러한 헤더 비트이동시마다 1씩 카운터를 증가시킨다(S42).
제 3 단계에 따르면, 아래에서와 같이 제 1 및 제 2 단계를 계속 반복하다가, 제 1 단계 압축결과 헤더의 비트 이동이 발생치 않으면 제 4 단계로 이동한다(S43).
[반복]
(제 1 단계) 10011 ==> 01100 ==> 1100
(제 2 단계) 1100 ==> 1001, 카운터 1증가(현재 카운터값 2)
[반복]
(제 1 단계) 1001 ==> 0110 ==> 110
(제 2 단계) 110 ==> 101, 카운터 1증가(현재 카운터값 3)
"101"에 대하여 다시 제 1 및 제 2 단계의 반복 후, 제 1 단계에 의해 101 ==> 010 ==> 10 과정을 수행시, 헤더의 비트 이동이 존재하지 않으므로, 제 1 단계 수행결과인 "10"을 가지고 제 4 단계로 넘어간다. 이때까지의 카운터 결과는 3이다.
제 4 단계에 따르면, 제 3 단계에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경한다(S44). 제 3 단계에서 넘어올 때 카운터는 3이다. "10"은 2비트이므로, 아래에서와 같이 1비트의 "0"으로만 이루어진 이진수로 압축된다.
"10" ==> "0"
제 5 단계에 따르면 제 4 단계의 결과에 이어서, 제 2 단계에서 카운터된 최종 헤더의 비트 이동 횟수를 이어서 붙인다(S45). 상기의 예에서는 헤더의 비트 이동이 전체 3회 일어났으므로 3의 이진수 표현인 "11"을 제 4 단계 압축결과 "0"에 이어서 붙인 결과인 "011" 이 최종압축 바이너리 클러스터가 된다. 즉 "100011"이라는 6비트의 바이너리 클러스터는 "011"이라는 3비트의 압축바이너리 클러스터로 압축되는 것이다.
이와 같이, 1001 타입 바이너리 클러스터의 경우에는 "0"으로 시작하는 이종(heterogenous)의 압축바이너리 클러스터가 된다. 이종이란 "0"과 "1"이 섞여 있는 것으로 정의할 수 있고, 동종(homogenous)이라는 것은 "0" 또는 "1"로만 이루어진 이진수로 되어있는 것으로 정의할 수 있다.
압축바이너리 클러스터를 전송하는 단계는 바이너리 클러스터가 101타입인 경우, "10" 다음에 "0"을 삽입하는 제 6 단계(S51), 제 6 단계(S51)를 마친 이진수를 비트반전한 다음, 최상위 비트"0"을 제거하는 제 7 단계(S52), 제 7 단계(S52)를 마친 이진수에서 최상위 비트로부터 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 최하위 비트 아래로 이동시키고, 헤더의 비트 이동시마다 1씩 카운터를 증가시키는 제 8 단계(S53), 제 8 단계(S53)를 헤더의 비트 이동이 존재하지 않을 때까지 반복 수행하는 제 9 단계(S54), 제 9 단계(S54)에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경하는 제 10 단계(S55) 및 제 10 단계(S55)를 마친 결과에 제 8 단계(S53)의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 1001타입의 압축 바이너리 클러스터와 구분되도록 비트반전하여 전송하는 제 11 단계(S56)를 포함할 수 있다. 상기한 제 6 내지 제 11 단계(S51~S56) 중 제 11 단계(S56)는 다른 예로서, 제 10 단계(S55)를 마친 결과에 제 8 단계(S53)의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 1001타입의 압축 바이너리 클러스터와 구분되도록 그대로 전송할 수 있다. 이러한 비트반전 여부는 압축 해제를 위하여 미리 약속으로 정해질 수 있다. 제 6 내지 제 11 단계(S51~S56)를 예로 들어 설명하되, 제 11 단계(S56)를 비트반전하여 전송하는 경우를 예로 들어 설명하면 다음과 같다.
101 타입 바이너리 클러스터는 101, 1011, 10111, 101111, 101111,... 등과 같은 형태의 바이너리 클러스터이며, 이와 같은 바이너리 클러스터는 먼저 "10" 다음에 "0"을 삽입하여, 1001 타입 바이너리 클러스터로 만든 뒤, 1001 타입 바이너리 클러스터의 압축방법에 따라 압축을 하되, 그 최종적인 압축바이너리 클러스터의 비트들을 반대값으로 반전시킴으로써 101 타입 바이너리 클러스터를 압축할 수 있다.
예를 들어, 101111이라는 101 타입 바이너리 클러스터에 대하여 상기와 같이 10 다음에 "0"을 삽입하여, "1001111"이라는 1001 타입 바이너리 클러스터로 변환한 뒤(S51), 1001 타입 바이너리 클러스터의 압축방법에 따라 압축을 수행하면 다음과 같다.
(제 7 단계) 1001111 ==> 0110000 ==> 110000
(제 8 단계) 110000 ==> 100001 ( 카운터값 1증가, 현재카운터 1)
(제 9 단계) 제 9 단계는 제 7 단계 및 제 8 단계를 반복하는 과정이다.
[반복]
(제 7 단계) 100001 ==> 011110 ==> 11110
(제 8 단계) 11110 ==> 10111 ( 카운터값 1증가, 현재카운터 2)
[반복]
(제 7 단계) 10111 ==> 01000 ==>1000
(제 8 단계) 10 앞에 헤더가 존재치 않으므로, 반복루프인 제 8 단계 탈출
(제 10 단계)
앞선 단계의 1000에서 최상위의 "1"을 제거한 "000" 으로 함
(제 11 단계) 카운터 2를 나타내는 이진수 10을 제 10 단계의 결과값과 결합하여 "00010"을 최종 압축 바이너리 클러스터로 하되, 101 타입으로부터 1001 타입으로 바이너리 클러스터 형태 변환된 것이므로, 압축바이너리 클러스터의 모든 비트값을 반전시키면, "11101"이며 이를 101111이라는 101타입 바이너리 클러스터의 최종 압축바이너리 클러스터로 한다.
1001 타입 바이너리 클러스터의 압축바이너리 클러스터가 0으로 시작하는 이종(heterogenous) 형태였다면, 101 타입 바이너리 클러스터의 압축바이너리 클러스터는 1로 시작하는 이종(heterogenous) 형태가 된다.
정리하면, 10 타입의 바이너리 클러스터의 압축바이너리 클러스터는 1, 0, 11, 00, 111, 000과 같이 1 또는 0으로만 이루어진 동종(homogenous) 압축바이너리 클러스터가 생성되며, 1001 타입 및 101 타입의 바이너리 클러스터의 압축바이너리 클러스터는 1 및 0이 최소 1개 이상 혼합된 이종(heterogenous)의 압축바이너리 클러스터가 생성된다. 또한 101 타입 바이너리 클러스터의 압축바이너리 클러스터가 0으로 시작하면, 1001 타입 바이너리 클러스터의 압축바이너리 클러스터는 1로 시작하도록 되고, 또는 실시례에 따라 그 반대로도 될 수 있음은 물론이다.
이렇게 바이너리 클러스터의 압축에 의해 생성된 압축바이너리 클러스터 각각에 대해 순차적으로 송신측에서 수신측으로 전송하는데, 압축바이너리 클러스터내의 이진수를 표현할 수 있고, 압축바이너리 클러스터들의 구분되어 있음을 물리적으로 표현할 수 있는 전송방법/저장방법/통신방법이라면 모두 본 발명을 적용할 수 있으며, 예컨대, 압축바이너리 클러스터의 전송 사이마다 압축바이너리 클러스터의 경계 등을 구분할 수 있도록 하는 다지털 변조 과정을 거칠 수 있다.
전송방법의 한 실시례로서, 맨체스터 코딩을 일부 변형하여, 압축바이너리 클러스터는 기존 맨체스터 코딩에 따라, 압축바이너리 클러스터 내의 "1"은 하강에서 상승엣지로 구분하고 "0"은 상승에서 하강엣지로 구분하여 전송하고, 압축바이너리 클러스터 간의 구분정보는 물리적으로 송신측과 수신측이 동기를 잃지 않으면서 구분가능한 휴지전송(0 voltage)을 보냄으로써, 구분할 수 있도록 수정할 수도 있다. 압축바이너리 클러스터의 전송에 이용되는 맨체스터 코딩 전송방식은 후술하기로 한다.
한편 도 2에서와 같이, 본 발명에 따른 이진데이터의 압축 방법뿐만 아니라, 후술하게 될 본 발명에 따른 이진데이터의 압축 해제 방법에 사용되는 장치(10)는 예컨대, 데이터의 수신을 위한 수신부(11)와, 수신부(11)에 수신된 데이터, 특히 이진데이터의 압축 방법이나 압축 해제 방법을 수행하는 마이컴(12)과, 마이컴(12)에 의해 압축이나 압축 해제된 이진데이터를 송신하는 송신부(13)와, 마이컴(12)에 의해 압축이나 압축 해제되거나, 수신부(11)에 의해 수신된 이진데이터를 저장하는 메모리부(14)를 포함할 수 있다. 또한 본 발명에서 전송은 수신부(11)에 의해 다른 장치로 전송하는 것뿐만 아니라, 메모리부(14)에 저장하기 위하여 전송하는 것도 포함할 수 있다.
도 3은 본 발명의 일 실시례에 따른 이진데이터 압축 해제 방법을 도시한 흐름도이다.
도 3을 참조하여, 본 발명의 일 실시례에 따른 이진데이터 압축 해제 방법은 먼저, 압축바이너리 클러스터를 순차적으로 수신받으면서, 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단한다(S60). 상기한 바와 같은 물리적인 디지털 변조과정을 거쳐 압축바이너리 클러스터 각각을 수신측으로 순차적으로 전송하여 수신받도록 하는데, 이때 수신측은 압축바이너리 클러스터의 유형을 판단하여, 유형에 따라 압축 해제 시나리오를 각각 달리 수행할 수 있다. 수신된 압축바이너리 클러스터가 "0"으로 시작하는지, "1"로 시작하는지 유형을 구분하고, "1"로 시작할 때의 압축 해제 시나리오가 별도로 존재하고, "0"으로 시작할 경우 이종(heterogeneous)인지, 동종(homogenous)인지에 따라 압축 해제 시나리오가 각각 달라진다.
압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계(S60)에서, 압축바이너리 클러스터가 "0"으로만 이루어지거나 "1"로만 이루어지는 경우, 일례로서 압축바이너리 클러스터를 이루는 "0" 또는 "1"에 해당하는 단일 비트 이진수를 나머지로 획득하거나, 다른 예로서 압축바이너리 클러스터를 이루는 "0" 또는 "1"에 해당하는 단일 비트 이진수를 비트반전한 이진수를 나머지로 획득하고, 압축바이너리 클러스터의 비트수를 몫으로 획득하며, 몫에 2를 곱한 값에 나머지를 더한 결과값에 해당하는 비트수를 가짐과 아울러, "1"로 시작하고 나머지가 1개 이상의 연속된 "0"으로 구성되는 바이너리 클러스터를 생성한다(S70). 이 단계(S70)를 예로 들어 설명하면 다음과 같다.
먼저 동종(homogenous)의 압축바이너리 클러스터를 수신했다면, 수신기는 이것이 10 타입 바이너리 클러스터로 압축 해제되어야 함을 알 수 있고, 10 타입 바이너리 클러스터의 압축과정의 역과정을 수행하면 된다. 즉, 동종(homogenous)의 압축바이너리 클러스터가 무슨 값으로 이루어진 비트들인가를 구분하여, "1"로 이루어져 있으면 R=1이고, "0"으로 이루어져 있으면 R=0이다. 물론 압축시에 R값의 반대값으로 압축바이너리 클러스터를 생성했다면 실시례에 따라 반대로도 R값이 할당될수 있음은 물론이다.
다음으로, 압축바이너리 클러스터의 비트수 길이를 이용하여 Q를 계산한다. 예를 들어, 압축바이너리 클러스터 "111"의 경우 R=1이고, Q=3이므로, N+1 = 2*Q+R 로 계산되는데, N+1 = 2*3+1 = 7이고, N=6임을 알 수 있다. 따라서, 원본 10 타입 바이너리 클러스터는 "1"에 이어 6개의 "0"으로 이루어진 "1000000"임을 알 수 있게 된다.
압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계(S60)에서, 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "0"으로 시작하는 경우, 압축바이너리 클러스터에서 최상위 비트로부터 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득하는 제 21 단계(S81), 시드의 최상위 비트 앞에 "1"을 추가하는 제 22 단계(S82), 제 22 단계(S82)를 마친 이진수를 비트반전하고 최상위 비트 앞에 "1"을 추가하는 제 23 단계(S83), 제 23 단계(S83)를 마친 이진수에서 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 하위부에 해당하는 "1"로만 구성된 테일을 최상위 비트 앞으로 이동시킨 다음, 카운터를 나타내는 이진수에서 1을 차감하는 제 24 단계(S84), 제 23 단계(S83) 및 제 24 단계(S84)를 반복하여 카운터가 0이 될 때까지 반복 수행하는 제 25 단계(S85) 및 제 25 단계(S85)를 마친 이진수를 비트반전한 다음, 최상위 비트 앞에 "1"을 추가하는 제 26 단계(S86)를 포함할 수 있다. 이러한 제 21 내지 제 26 단계(S81~S86) 중에서 제 21 단계(S81)는 다른 예로서 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "0"으로 시작하는 경우, 압축바이너리 클러스터를 미리 약속된 바에 따라 비트반전하여 최상위 비트로부터 최하위 비트 방향으로 이동하면서, 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득할 수 있다.
압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계(S60)에서, 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "1"로 시작하는 경우, 바이너리 클러스터를 비트반전하여, 최상위 비트에서 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득하는 제 27 단계(S91), 시드의 최상위 비트에 "1"을 추가하는 제 28 단계(S92), 제 28 단계(S92)를 마친 이진수를 비트반전하고, 최상위 비트 앞에 "1"을 추가하는 제 29 단계(S93), 제 29 단계(S93)를 마친 이진수에서 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1"사이를 기준으로 분할하여 하위부에 해당하는 "1"로만 구성된 테일을 최상위 비트 앞으로 이동시킨 다음, 카운터에서 1을 차감하는 제 30 단계(S94), 제 29 단계(S93) 및 제 30 단계(S94)를 카운터가 0이 될 때까지 반복 수행하는 제 31 단계(S95), 제 31 단계(S95)를 마친 이진수를 비트반전한 다음 최상위 비트 앞에 "1"을 추가하는 제 32 단계(S96) 및 제 32 단계(S96)를 마친 이진수에서 최상위의 "10" 다음의 "0"을 제거하는 제 33 단계(S97)를 포함할 수 있다. 제 27 내지 제 33 단계(S91~S97)에서 제 27 단계(S91)는 다른 예로서, 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "1"로 시작하는 경우, 미리 약속으로 정한 바와 같이 바이너리 클러스터를 비트반전하지 않고, 압축바이너리 클러스터에서 최상위 비트로부터 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득할 수 있다.
제 21 내지 제 26 단계(S81~S86), 그리고, 제 27 내지 제 33 단계(S91~S97)에 대해서 이하에서 설명하되, 제 21 단계(S81)는 비트반전하지 않는 것을 예로 들기로 하며, 제 27 단계(S91)는 비트반전하는 것을 예로 들기로 한다.
수신기는 최초 1로 시작했는지 또는 0으로 시작했는지에 따라 1001 타입으로 갈지, 101 타입으로 압축 해제 될지 결정할 수 있고, 각 유형의 압축과정의 역과정으로 압축 해제하면 된다. 본 실시례에서는 최초 1로 시작하는 이종의 압축바아너리 클러스터가 1001 타입으로 압축 해제되고, 최초 0으로 시작하는 동종의 압축바이너리 클러스터가 101 타입으로 압축 해제 되는 실시례를 보이겠다.
압축바이너리 클러스터가 "00100"의 경우와 같이, "0"으로 시작함과 아울러 "0"과 "1" 이 혼재된 이종(heterogeneous) 타입 압축바이너리 클러스터이다. 먼저, 이종 타입 압축바이너리 클러스터를 수신부에서 수신을 받으면, 제 21 단계로서, 최상위 비트에서 최하위 비트로 내려가면서 처음으로 "1"을 만날 때 "0"과 "1" 사이에서 압축바이너리 클러스터를 분할하는데, 상위부가 시드(seed)이고 하위부가 카운터(counter)이고, 이는 아래와 같다(S81).
Figure 112016031815537-pat00002
제 22 단계는 시드로부터 시작하여, 압축 해제를 시작한다. 카운터는 "100"으로서 십진수로는 4를 나타내고 있다. "0"으로 이루어진 시드 데이터의 최상위 비트에 아래에서와 같이, "1"을 추가한다(S82).
"00" ==> "100" (최상위 비트앞에 "1"추가)
제 23 단계는 아래에서와 같이, 제 22 단계를 마친 이진수, 즉 압축 해제중인 바이너리 클러스터의 비트를 반전시키고, 최상위 비트 앞에 "1"을 추가한다(S83).
"100" ==> "011" (비트반전) ==> "1011" (최상위 비트앞에 "1"추가)
제 24 단계는 제 23 단계의 결과, 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1"사이를 분할하여 그때까지 수집된 "1"로만 구성된 이진수를 테일(tail)이라고 하고 이 테일을 최상위 비트 앞으로 이동시킨다. 그리고 카운터가 나타내는 이진수에서 1을 차감한다(S84). 이러한 테일의 이동과정을 아래와 같다.
Figure 112016031815537-pat00003
상기의 테일 이동 과정의 결과는 아래와 같다.
"1011" ==> 10 / 11(테일 구분) ==> 1110(테일 이동), 카운터 1차감(현재 카운터값 3)
제 25 단계는 제 23 및 제 24 단계를 카운터가 0이 될 때까지 아래와 같이 반복 수행한다(S85).
[반복]
제 23 단계 : 1110 ==> 0001 ==> 10001
제 24 단계 : 10001 == 1000 / 1 ==> 11000, 카운터 1차감(현재 카운터값 2)
[반복]
제 23 단계 : 11000 ==> 00111 ==> 100111
제 24 단계 : 100111 ==> 100 / 111 ==> 111100, 카운터 1차감(현재 카운터값 1)
[반복]
제 3 단계 : 111100 ==> 000011 ==> 1000011
제 4 단계 : 1000011 ==> 10000 / 11 ==> 1110000, 카운터 1차감(현재 카운터값 0)
여기서 카운터 값이 0이 되므로, 제 6 단계로 이동한다.
제 26 단계는 제 25 단계에서의 압축 해제 결과인 "1110000"에 대하여, 아래에서와 같이, 최종적으로 비트반전을 수행한 뒤 최상위 비트에 "1"을 추가하여 압축 해제과정을 종료한다(S86).
1110000 ==> 0001111 ==> 10001111
따라서 최종 압축 해제된 바이너리 클러스터는 "10001111"이다. 이는 압축과정 전과 동일한 결과로 압축 해제됨을 알 수 있다.
압축바이너리 클러스터가 "11101"의 경우와 같이, "1"로 시작함과 아울러 "0"과 "1" 이 혼재된 이종(heterogeneous) 타입 압축바이너리 클러스터인 경우, 이와 같은 압축바이너리 클러스터는 101 타입 바이너리 클러스터로 압축 해제되어야 함을 수신기를 그 형태를 보고 알 수 있게 된다.
먼저, 압축바이너리 클러스터를 비트 반전하면 "00010"이 되며, 이를 아래 0으로 시작하는 이종의 압축바이너리 클러스터의 압축 해제 방법에 따라 압축 해제 하면, 아래와 같다.
이종 타입 압축바이너리 클러스터를 수신부에서 수신을 받으면, 제 27 단계로서, 최상위 비트에서 최하위 비트로 내려가면서 처음으로 "1"을 만날 때 "0"과 "1" 사이에서 압축바이너리 클러스터를 분할하는데, 상위부가 시드(seed)이고 하위부가 카운터(counter)이고, 이는 아래와 같다(S91).
Figure 112016031815537-pat00004
제 28 단계는 시드로부터 시작하여, 압축 해제를 시작한다. 카운터는 "10"으로서 십진수로는 2를 나타내고 있다. "0"으로 이루어진 시드 데이터의 최상위 비트에 아래에서와 같이, "1"을 추가한다(S92).
"000" ==> "1000" (최상위 비트앞에 "1"추가)
제 29 단계는 아래에서와 같이, 제 28 단계를 마친 이진수, 즉 압축 해제중인 바이너리 클러스터의 비트를 반전시키고, 최상위 비트 앞에 "1"을 추가한다(S93).
"1000" ==> "0111" (비트반전) ==> "10111" (최상위 비트앞에 "1"추가)
제 30 단계는 제 29 단계의 결과, 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1"사이를 분할하여 그때까지 수집된 "1"로만 구성된 이진수를 테일(tail)이라고 하고, 이 테일을 최상위 비트 앞으로 이동시킨다. 그리고 카운터가 나타내는 이진수에서 1을 차감한다(S94).
이러한 테일의 이동과정을 아래와 같다.
Figure 112016031815537-pat00005
상기의 테일 이동 과정의 결과는 아래와 같다.
"10111" ==> 10 / 111(테일 구분) ==> 11110(테일 이동), 카운터 1차감(현재 카운터값 1)
제 31 단계는 제 29 단계 및 제 30 단계를 카운터가 0이 될 때까지 아래와 같이 반복 수행한다(S95).
[반복]
제 29 단계 : 11110 ==> 00001 ==> 100001
제 30 단계 : 100001 == 10000 / 1 ==> 110000, 카운터 1차감(현재 카운터값 0)
여기서 카운터 값이 0이 되므로, 제 32 단계로 이동한다.
제 32 단계는 제 31 단계에서의 압축 해제 결과인 "110000"에 대하여, 아래에서와 같이, 최종적으로 비트반전을 수행한 뒤 최상위 비트 앞에 "1"을 추가한다(S96).
110000 ==> 001111 ==> 1001111
제 33 단계는 1로 시작하는 이종 압축바이너리 클러스터였으므로, 마지막으로 최상위의 "10" 다음의 "0"을 제거하여 101 타입으로 변환한다(S97). 따라서 최종 압축 해제된 바이너리 클러스터는 "101111"이다. 이는 압축과정 전과 동일한 결과로 압축 해제됨을 알 수 있다.
본 발명의 압축 해제 방법에 대해서, 다른 예를 들면 다음과 같다.
압축바이너리 클러스터 "011"의 경우에는 "0"과 "1" 이 혼재된 이종 타입 압축바이너리 클러스터이다. 이종 타입 압축바이너리 클러스터를 수신부에서 수신을 받으면, 최상위 비트에서 최하위 비트로 내려가면서 처음으로 "1"을 만날 때 "0"과 "1"사이에서 압축바이너리 클러스터를 분할하는데, 상위부가 시드이고 하위부가 카운터이며, 이는 아래와 같다(S81).
Figure 112016031815537-pat00006
제 21 단계에 의한 시드로부터 시작하여, 압축 해제를 시작한다. 카운터는 "11"으로서 십진수로는 3을 나타내고 있다.
제 22 단계는 아래에서와 같이, "0"으로 이루어진 시드 데이터의 최상위 비트에 "1"을 추가한다(S82).
"0" ==> "10" (최상위 비트앞에 "1"추가)
제 23 단계는 아래에서와 같이, 압축 해제중인 바이너리 클러스터의 비트를 반전시키고, 최상위 비트 앞에 "1"을 추가한다(S83).
"10" ==> "01" (비트반전) ==> "101" (최상위 비트앞에 "1"추가)
제 24 단계는 제 23 단계의 결과, 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1"사이를 분할하여 그때까지 수집된 "1"로만 구성된 이진수를 테일(tail)이라고 하고, 이 테일을 최상위 비트 앞으로 이동시킨다. 그리고 카운터가 나타내는 이진수에서 1을 차감한다(S84). 이러한 테일의 이동과정을 아래 그림에서 나타낸다.
Figure 112016031815537-pat00007
상기 테일 이동 과정의 결과는 아래와 같다.
"101" ==> 10 / 1(테일 구분) ==> 110(테일 이동), 카운터 1차감(현재 카운터값 2)
제 25 단계는 다시 제 23 및 제 24 단계를 반복하면서 카운터가 0이 될 때까지 반복수행한다(S85).
[반복]
제 23 단계 : 110 ==> 001 ==> 1001
제 24 단계 : 1001 == 100 / 1 ==> 1100, 카운터 1차감(현재 카운터값 1)
[반복]
제 23 단계 : 1100 ==> 0011 ==> 10011
제 24 단계 : 10011 ==> 100 / 11 ==> 11100, 카운터 1차감(현재 카운터값 0)
카운터 값이 0이 되므로, 제 26 단계로 이동한다.
제 26 단계는 제 24 단계에서의 압축 해제 결과인 "11100"에 대하여, 아래에서와 같이 최종적으로 비트반전을 수행한 뒤 최상위 비트에 "1"을 추가하여 압축 해제과정을 종료한다(S86).
11100 ==> 00011 ==> 100011
따라서 최종 압축 해제된 바이너리 클러스터는 "100011"이다. 이는 압축과정전과 동일한 결과로 압축 해제됨을 알 수 있다.
"1"로 시작하는 압축바이너리 클러스터의 압축 해제는 다음과 같다.
"1"로 시작하는 압축바이너리 클러스터는 이종(hetrogenous)일 수 있고, 동종(homogenous)일 수도 있는데, 먼저 압축바이너리 클러스터 자체가 나타내는 십진수를 비트수로 하는 연속된 "0"의 이진수를 생성한다. 다음으로 생성된 이진수의 최상위 비트 앞에 "1"을 추가함으로써 압축 해제한다.
예를 들어 "1"로 시작하는 압축바이너리 클러스터가 "101"이라면 이것이 나타내는 이진수 값 "101"은 십진수로 5이므로, 5비트의 연속된 "0"으로 이루어진 이진수를 생성하면 "00000"이고, 다음으로 이렇게 생성된 이진수의 최상위 비트 앞에 "1"을 추가함으로써 압축바이너리 클러스터에 대한 압축 해제된다. 아래와 이와 같은 예시들을 나타낸다.
101 (5)==> 00000 ==> 100000
10 (2) ==> 00 ==> 100
1010 (10) ==> 0000000000 ==> 10000000000
상기의 압축 해제 과정의 원리를 요약하면, 순차적으로 수신된 압축바이너리 클러스터 각각의 유형을 고려하는데, 먼저 "1"로 시작하는지 "0"으로 시작하는지를 구분한 다음, "0"으로 시작하는 경우는, 크게 이종(heterogenous)인지. 동종(homogenous)인지를 구분하여, 각각의 유형에 따라 압축 해제하고, "1"로 시작하는 경우는 그에 해당하는 방법에 따라 압축 해제한다.
압축바이너리 클러스터를 최초로 전송하기 전에, 전송하고자 하는 이진데이터의 최상위 비트에 해당하는 이진수를 식별하기 위한 이진수를 사인 비트(Sign bit)로 하여 전송하는 단계가 수행될 수 있다. 여기서 사인 비트는 일례로 전송하고자 하는 이진데이터의 최상위 비트에 해당하는 이진수와 동일한 이진수가 사용될 수 있고, 다른 예로서 전송하고자 하는 이진데이터의 최상위 비트에 해당하는 이진수를 비트반전시킨 이진수가 사용될 수 있다.
상기 사인 비트 전송방식 외에도, 압축바이너리 클러스터를 최초로 전송하기 전에, 전송하고자 하는 이진데이터의 최상위 비트에 해당하는 이진수를 식별하기 위한 송신부와 수신부간의 상호 프로토콜을 약속하는 단계를 더 포함할 수 있다. 이와 같이 원본 데이터의 최상위 비트에 해당하는 이진수를 식별하기 위하여 압축부와 압축 해제부가 상호 약속하기 위한 모든 프로토콜은 본 발명에 속한다 할 것이다.
본 발명의 압축바이너리 클러스터를 전송하는 방법은 매우 다양하며, 그 중에 한가지 응용 실시례로서 맨체스터 코딩 전송방식으로 전송한다면 다음과 같다. 맨체스터코드 전송방식에서는 +V, -V, 0 3가지를 전위를 가질 수 있는데, 비트 1은 비트 시간 한가운데에서의 전압 변화가 음전하고, 비트 0은 전압 변화가 양전함으로써 표현할 수 있고, 기존 맨체스터 코딩방식과 다른점은 추가로 바이너리 클러스터의 사이사이의 간격은 전압 zero(0 voltage)를 특정 시간 동안 전송하는 부분을 부가함으로써, 바이너리 클러스터간 구분정보가 전송가능하다는 점이다. 이러한 규칙에 따라서 예를 들기로 한다.
아래와 같은 압축 바이너리 클러스터가 있다면,
000 / 0 / 1 / 00101 / 0 / 0 / 11 / 111001 / 11
다음과 같이 맨체스터 코드로 변환되어 전송 가능하다.
Figure 112016031815537-pat00008
또는 아래와 같이 압축바이너리 클러스터 구분정보를 직전 전위와 동일하게 타임 t 동안 전송하는 방식으로 맨체스터 코딩의 수정을 통해 전송할 수 있다. 물론 이러한 타임 t는 설정에 따라 달라질 수 있음은 물론이다.
Figure 112016031815537-pat00009
연속된 2개 이상의 0 전압은 존재하지 않는다. 2개 이상의 0전압일 경우 신호가 없는 것으로 간주할 수 있다. 직류성분은 또한 존재하지 않게 전송이 가능하다.
또는 differential manchester 코딩을 응용하되, 압축 바이너리 클러스터 역시 직전 전위와 동일하게 타임 t 동안 전송하여 구분할 수도 있으며, 아래처럼 0 volt 전위로 구분할 수도 있다.
Figure 112016031815537-pat00010
상기처럼 맨체스터 코딩의 전송방법의 변형은 비트 period의 1/2주기에서 반드시 transition이 일어나는데, 압축바이너리 클러스터 구분정보일 때는 1회 해당 transition이 일어나지 않게 되고 이를 수신기에서 감지하며 압축바이너리 클러스터구분정보를 확인할 수 있다. 특히 압축바이너리 클러스터의 구분정보는 연속하여 2회이상 절대 존재하지 않으므로, 1회의 transition 미감지 자체가 하나의 clock 주기를 인식할 수 있는 정보이므로, self-clocking이라는 맨체스터코딩의 큰 장점을 훼손하지 않는다.
맨체스터 코딩 전송방식에서 압축바이너리 클러스터간 구분정보(/)를 비트 period 중간에서 transition이 일어나지 않는 violation sequence를 이용하여 전송하는 원리이다.
이는 아래의 표 3에서와 같이, 이미 IEEE 의 Ethernet 표준에서도 언급되고 있으며, 기술적으로도 구현가능한 사항이다. 따라서 압축바이너리 클러스터 간의 구분정보를 맨체스터 코딩으로 보낼 때, EFD 또는 SFD를 1 bit period 삽입함으로써 압축바이너리 클러스터간의 구분정보를 표현할 수 있다.
Framing in IEEE 802. 5 Token Ring
Figure 112016031815537-pat00011
A method based on Physical layer code violations may be used when the
transmission code has some redundancy - the biphase (or Manchester)
code (including its differential variants) has this property
Figure 112016031815537-pat00012
This method is used in the IEEE 802.5 Token Ring LAN, which uses
differential Manchester coding
- The line signal used to represent data symbols (binary 0 and 1) has a transition
(the signal changes value) at the middle of the bit interval
- Binary 0 is coded such that the line signal has another transition at the start of
the bit interval, while there is no such transition when coding binary 1
Figure 112016031815537-pat00013
The start and the end of a frame are identified by a Start of Frame Delimiter
(SFD) and an End of Frame Delimiter (EFD), respectively
Figure 112016031815537-pat00014
Two symbols (called J and K) with a duration of one bit interval are used in
SFD and EFD as code violations of the differential Manchester code
- J and K are represented as line signals without any transition at the middle of a
bit interval
- K is coded such that the line signal has a transition at the start of the bit interval
(like binary 0), while J is coded without such a transition (like binary 1)
Figure 112016031815537-pat00015
The first six bits of SFD and EFD are coded as JK0JK0 and JK1JK1,
respectively (the other two bits are used for other purposes)



Figure 112016031815537-pat00016

또는 RZ 코딩을 변형하여, 압축바이너리 클러스터 구분정보를 0 V(volt) 전위로 타임 t 동안 전송할 수 있다.
Figure 112016031815537-pat00017
상기와 같이 이진수 "0" , "1" 그리고 바이너리 클러스터 사이의 정보를 물리적으로 또는 시간적인 수단을 통해 구분할 수 있도록 전송할 수 있다면 어떠한 라인 코딩(line coding) 방법, 전자적/광학적/자기적/물리적 저장, 통신방법 등에도 본 발명은 적용가능하다.
본 발명은 전송뿐만 아니라 저장방법에서도 동일하게 활용 가능한데, 이진데이터를 본 발명의 압축바이너리 클러스터생성방법을 적용한 뒤, 물리적 저장매체에 저장할 때 1, 0, 그리고 압축바이너리 클러스터 구분정보를 자기 스핀(spin)의 방향성 등 물리적 특성의 차이를 이용하여 저장할 수 있으며, 본 발명에서는 자기 ㅅ스핀 특성을 이용하여 저장방법에도 적용하는 실시례를 보인다. 여기서 up-spin, down-spin, null-spin(스핀이 없는 자기정보) 라는 3가지 상태를 이용하여 매체에 압축바이너리 클러스터를 저장할 수 있다.
Figure 112016031815537-pat00018
이와 같은 본 발명에 따른 이진데이터 압축 및 압축 해제 방법에 따르면, 압축 및 압축 해제를 위한 처리 속도를 향상시킬 수 있고, 압축 및 압축 해제의 결과값에 대한 신뢰성을 높일 수 있으며, 이진데이터 전송의 실질적인 트래픽을 절감할 수 있다.
이와 같이 본 발명에 대해서 첨부된 도면을 참조하여 설명하였으나, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 수정 및 변형이 이루어질 수 있음은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시례에 한정되어서는 아니되며, 후술하는 특허청구범위뿐만 아니라 이러한 특허청구범위와 균등한 것들에 의해 정해져야 한다.
11 : 수신부 12 : 마이컴
13 : 송신부 14 : 메모리부

Claims (14)

  1. 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "10"을 처음 만날 때마다 "10"의 앞에서 분할하여, 다수의 바이너리 클러스터로 구분하는 단계;
    상기 바이너리 클러스터 각각을 "1"로 시작하고 나머지가 1개 이상의 연속된 "0"으로 구성되는 10타입, "10"으로 시작하고 나머지가 1개 이상의 연속된 "0" 그리고 이어서 1개 이상의 연속된 "1"로 이루어지는 1001타입, 그리고 "10"으로 시작하고 나머지가 1개 이상의 연속된 "1"로만 구성되는 101타입으로 구분하는 단계; 및
    상기 바이너리 클러스터를 배열 순서대로 압축하여 전송하되, 상기 바이너리 클러스터를 상기 구분한 타입별로 상이한 압축 방식으로 압축한 압축바이너리 클러스터를 전송하는 단계;
    를 포함하는, 이진데이터 압축 방법.
  2. 청구항 1에 있어서,
    상기 압축바이너리 클러스터를 전송하는 단계는,
    상기 바이너리 클러스터가 상기 10타입인 경우, 비트수를 2로 나누어 몫과 나머지를 획득하여, 상기 나머지에 해당하는 이진수 또는 상기 나머지에 해당하는 이진수를 비트반전한 이진수를 상기 몫의 갯수만큼 연속되도록 배열한 압축바이너리 클러스터를 생성하여 전송하는, 이진데이터 압축 방법.
  3. 청구항 1에 있어서,
    상기 압축바이너리 클러스터를 전송하는 단계는,
    상기 바이너리 클러스터가 상기 1001타입인 경우, 비트반전한 다음, 최상위 비트"0"을 제거하는 제 1 단계;
    상기 제 1 단계를 마친 이진수에서 최상위 비트로부터 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 최하위 비트 아래로 이동시키고, 상기 헤더의 비트 이동시마다 1씩 카운터를 증가시키는 제 2 단계;
    상기 제 2 단계를 헤더의 비트 이동이 존재하지 않을 때까지 반복 수행하는 제 3 단계;
    상기 제 3 단계에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경하는 제 4 단계; 및
    상기 제 4 단계를 마친 결과에 상기 제 2 단계의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 그대로 전송하는 제 5 단계;
    를 포함하는, 이진데이터 압축 방법.
  4. 청구항 1에 있어서,
    상기 압축바이너리 클러스터를 전송하는 단계는,
    상기 바이너리 클러스터가 상기 1001타입인 경우, 비트반전한 다음, 최상위 비트"0"을 제거하는 제 1 단계;
    상기 제 1 단계를 마친 이진수에서 최상위 비트로부터 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 최하위 비트 아래로 이동시키고, 상기 헤더의 비트 이동시마다 1씩 카운터를 증가시키는 제 2 단계;
    상기 제 2 단계를 헤더의 비트 이동이 존재하지 않을 때까지 반복 수행하는 제 3 단계;
    상기 제 3 단계에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경하는 제 4 단계; 및
    상기 제 4 단계를 마친 결과에 상기 제 2 단계의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 비트반전하여 전송하는 제 5 단계;
    를 포함하는, 이진데이터 압축 방법.
  5. 청구항 1에 있어서,
    상기 압축바이너리 클러스터를 전송하는 단계는,
    상기 바이너리 클러스터가 상기 101타입인 경우, "10" 다음에 "0"을 삽입하는 제 6 단계;
    상기 제 6 단계를 마친 이진수를 비트반전한 다음, 최상위 비트"0"을 제거하는 제 7 단계;
    상기 제 7 단계를 마친 이진수에서 최상위 비트로부터 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 최하위 비트 아래로 이동시키고, 상기 헤더의 비트 이동시마다 1씩 카운터를 증가시키는 제 8 단계;
    상기 제 8 단계를 헤더의 비트 이동이 존재하지 않을 때까지 반복 수행하는 제 9 단계;
    상기 제 9 단계에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경하는 제 10 단계; 및
    상기 제 10 단계를 마친 결과에 상기 제 8 단계의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 상기 1001타입의 압축 바이너리 클러스터와 구분되도록 비트반전하여 전송하는 제 11 단계;
    를 포함하는, 이진데이터 압축 방법.
  6. 청구항 1에 있어서,
    상기 압축바이너리 클러스터를 전송하는 단계는,
    상기 바이너리 클러스터가 상기 101타입인 경우, "10" 다음에 "0"을 삽입하는 제 6 단계;
    상기 제 6 단계를 마친 이진수를 비트반전한 다음, 최상위 비트"0"을 제거하는 제 7 단계;
    상기 제 7 단계를 마친 이진수에서 최상위 비트로부터 최하위 비트로 이동하면서 처음 만나는 "10" 앞의 "1"로만 이루어진 이진수에 해당하는 헤더를 최하위 비트 아래로 이동시키고, 상기 헤더의 비트 이동시마다 1씩 카운터를 증가시키는 제 8 단계;
    상기 제 8 단계를 헤더의 비트 이동이 존재하지 않을 때까지 반복 수행하는 제 9 단계;
    상기 제 9 단계에서 넘어온 "1"로 시작하고 "0"으로만 이루어진 n비트의 이진수에서, 최상위 비트의 "1"을 제거하여 n-1비트의 "0"으로만 이루어진 이진수로 변경하는 제 10 단계; 및
    상기 제 10 단계를 마친 결과에 상기 제 8 단계의 최종 카운터를 이진수로 붙인 압축 바이너리 클러스터를 상기 1001타입의 압축 바이너리 클러스터와 구분되도록 그대로 전송하는 제 11 단계;
    를 포함하는, 이진데이터 압축 방법.
  7. 이진데이터를 최상위 비트에서 최하위 비트 방향 또는 그 역방향으로 이동하면서 "01"을 처음 만날 때마다 "01"의 다음비트 사이에서 분할하여, 다수의 바이너리 클러스터로 구분하는 단계;
    상기 바이너리 클러스터 각각을 "0"으로 시작하고 나머지가 1개 이상의 연속된 "0"으로 구성되는 A타입, 1개 이상의 연속된 "1" 그리고 1개의 “0” 그리고 1개의 "1"로 이루어지는 B타입, 그리고 1개 이상의 연속된 “1” 그리고 2개 이상의 연속된 “0” 그리고 1개의 "1"로 구성되는 C타입으로 구분하는 단계; 및
    상기 바이너리 클러스터를 배열 순서대로 압축하여 전송하되, 상기 바이너리 클러스터를 상기 구분한 타입별로 상이한 압축 방식으로 압축한 압축바이너리 클러스터를 전송하는 단계;
    를 포함하는, 이진데이터 압축 방법.
  8. 청구항 7에 있어서,
    상기 압축바이너리 클러스터를 전송하는 단계는,
    상기 바이너리 클러스터가 상기 A타입인 경우, "1"로 시작하고 나머지가 1개 이상의 연속된 "0"으로 구성되는 10타입으로 최상위와 최하위의 방향성을 바꾸어서 사상하여 압축하는 단계;
    상기 바이너리 클러스터가 상기 B타입인 경우, "10"으로 시작하고 나머지가 1개 이상의 연속된 "1"로만 구성되는 101타입으로 최상위와 최하위의 방향성을 바꾸어서 사상하여 압축하는 단계; 및
    상기 바이너리 클러스터가 상기 C타입인 경우, "10"으로 시작하고 나머지가 1개 이상의 연속된 "0" 그리고 이어서 1개 이상의 연속된 "1"로 이루어지는 1001타입으로 최상위와 최하위의 방향성을 바꾸어서 사상하여 압축하는 단계;
    를 포함하는 이진데이터 압축 방법.
  9. 청구항 1에 있어서,
    상기 압축 바이너리 클러스터의 전송은,
    맨스터 코딩 전송방식을 이용하는, 이진데이터 압축 방법.
  10. 청구항 2에 기재된 이진데이터 압축 방법에 의해 압축된 이진데이터의 압축 해제 방법으로서,
    상기 압축바이너리 클러스터를 순차적으로 수신받으면서, 상기 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계; 및
    상기 압축바이너리 클러스터가 "0"으로만 이루어지거나 "1"로만 이루어지는 경우, 미리 정해진 바에 따라 상기 압축바이너리 클러스터를 이루는 "0" 또는 "1"에 해당하는 단일 비트 이진수를 나머지로 획득하거나, 상기 압축바이너리 클러스터를 이루는 "0" 또는 "1"에 해당하는 단일 비트 이진수를 비트반전한 이진수를 나머지로 획득하고, 상기 압축바이너리 클러스터의 비트수를 몫으로 획득하며, 상기 몫에 2를 곱한 값에 상기 나머지를 더한 결과값에 해당하는 비트수를 가짐과 아울러, "1"로 시작하고 나머지가 1개 이상의 연속된 "0"으로 구성되는 바이너리 클러스터를 생성하는 단계;
    를 포함하는, 이진데이터 압축 해제 방법.
  11. 청구항 1, 청구항 3 또는 청구항 9 중 어느 한 항에 기재된 이진데이터 압축 방법에 의해 압축된 이진데이터의 압축 해제 방법으로서,
    상기 압축바이너리 클러스터를 순차적으로 수신받으면서, 상기 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계;
    상기 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "0"으로 시작하는 경우, 상기 압축바이너리 클러스터에서 최상위 비트로부터 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득하는 제 21 단계;
    상기 시드의 최상위 비트 앞에 "1"을 추가하는 제 22 단계;
    상기 제 22 단계를 마친 이진수를 비트반전하고 최상위 비트 앞에 "1"을 추가하는 제 23 단계;
    상기 제 23 단계를 마친 이진수에서 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 하위부에 해당하는 "1"로만 구성된 테일을 최상위 비트 앞으로 이동시킨 다음, 상기 카운터를 나타내는 이진수에서 1을 차감하는 제 24 단계:
    상기 제 23 단계 및 상기 제 24 단계를 반복하여 상기 카운터가 0이 될 때까지 반복 수행하는 제 25 단계; 및
    상기 제 25 단계를 마친 이진수를 비트반전한 다음, 최상위 비트 앞에 "1"을 추가하는 제 26 단계;
    를 포함하는, 이진데이터 압축 해제 방법.
  12. 청구항 1, 청구항 4 또는 청구항 9 중 어느 한 항에 기재된 이진데이터 압축 방법에 의해 압축된 이진데이터의 압축 해제 방법으로서,
    상기 압축바이너리 클러스터를 순차적으로 수신받으면서, 상기 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계;
    상기 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "0"으로 시작하는 경우, 상기 압축바이너리 클러스터를 비트반전하여 최상위 비트로부터 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득하는 제 21 단계;
    상기 시드의 최상위 비트 앞에 "1"을 추가하는 제 22 단계;
    상기 제 22 단계를 마친 이진수를 비트반전하고 최상위 비트 앞에 "1"을 추가하는 제 23 단계;
    상기 제 23 단계를 마친 이진수에서 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 하위부에 해당하는 "1"로만 구성된 테일을 최상위 비트 앞으로 이동시킨 다음, 상기 카운터를 나타내는 이진수에서 1을 차감하는 제 24 단계:
    상기 제 23 단계 및 상기 제 24 단계를 반복하여 상기 카운터가 0이 될 때까지 반복 수행하는 제 25 단계; 및
    상기 제 25 단계를 마친 이진수를 비트반전한 다음, 최상위 비트 앞에 "1"을 추가하는 제 26 단계;
    를 포함하는, 이진데이터 압축 해제 방법.
  13. 청구항 1, 청구항 5 또는 청구항 9 중 어느 한 항에 기재된 이진데이터 압축 방법에 의해 압축된 이진데이터의 압축 해제 방법으로서,
    상기 압축바이너리 클러스터를 순차적으로 수신받으면서, 상기 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계;
    상기 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "1"로 시작하는 경우, 상기 바이너리 클러스터를 비트반전하여, 최상위 비트에서 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득하는 제 27 단계;
    상기 시드의 최상위 비트에 "1"을 추가하는 제 28 단계;
    상기 제 28 단계를 마친 이진수를 비트반전하고, 최상위 비트 앞에 "1"을 추가하는 제 29 단계;
    상기 제 29 단계를 마친 이진수에서 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1"사이를 기준으로 분할하여 하위부에 해당하는 "1"로만 구성된 테일을 최상위 비트 앞으로 이동시킨 다음, 상기 카운터에서 1을 차감하는 제 30 단계;
    상기 제 29 단계 및 상기 제 30 단계를 상기 카운터가 0이 될 때까지 반복 수행하는 제 31 단계;
    상기 제 31 단계를 마친 이진수를 비트반전한 다음 최상위 비트 앞에 "1"을 추가하는 제 32 단계; 및
    상기 제 32 단계를 마친 이진수에서 최상위의 "10" 다음의 "0"을 제거하는 제 33 단계;
    를 포함하는, 이진데이터 압축 해제 방법.
  14. 청구항 1, 청구항 6 또는 청구항 9 중 어느 한 항에 기재된 이진데이터 압축 방법에 의해 압축된 이진데이터의 압축 해제 방법으로서,
    상기 압축바이너리 클러스터를 순차적으로 수신받으면서, 상기 압축바이너리 클러스터가 동일한 이진수로 이루어지는지를 판단하는 단계;
    상기 압축바이너리 클러스터가 "0"과 "1"로 이루어짐과 아울러, "1"로 시작하는 경우, 상기 바이너리 클러스터에서 최상위 비트로부터 최하위 비트 방향으로 이동하면서 처음으로 "1"을 만날 때 "0"과 "1" 사이를 기준으로 분할하여 상위부에 해당하는 시드와 하위부에 해당하는 카운터를 획득하는 제 27 단계;
    상기 시드의 최상위 비트에 "1"을 추가하는 제 28 단계;
    상기 제 28 단계를 마친 이진수를 비트반전하고, 최상위 비트 앞에 "1"을 추가하는 제 29 단계;
    상기 제 29 단계를 마친 이진수에서 최하위 비트로부터 최상위 비트 방향으로 이동하면서 처음 "0"을 만날 때 "0"과 "1"사이를 기준으로 분할하여 하위부에 해당하는 "1"로만 구성된 테일을 최상위 비트 앞으로 이동시킨 다음, 상기 카운터에서 1을 차감하는 제 30 단계;
    상기 제 29 단계 및 상기 제 30 단계를 상기 카운터가 0이 될 때까지 반복 수행하는 제 31 단계;
    상기 제 31 단계를 마친 이진수를 비트반전한 다음 최상위 비트 앞에 "1"을 추가하는 제 32 단계; 및
    상기 제 32 단계를 마친 이진수에서 최상위의 "10" 다음의 "0"을 제거하는 제 33 단계;
    를 포함하는, 이진데이터 압축 해제 방법.
KR1020160040281A 2015-05-14 2016-04-01 이진데이터 압축 및 압축 해제 방법 KR101723336B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020150067003 2015-05-14
KR20150067003 2015-05-14

Publications (2)

Publication Number Publication Date
KR20160134480A KR20160134480A (ko) 2016-11-23
KR101723336B1 true KR101723336B1 (ko) 2017-04-06

Family

ID=57541919

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160040281A KR101723336B1 (ko) 2015-05-14 2016-04-01 이진데이터 압축 및 압축 해제 방법

Country Status (1)

Country Link
KR (1) KR101723336B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102361730B1 (ko) * 2020-06-15 2022-02-11 김정훈 데이터 압축 방법 및 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101467684B1 (ko) * 2013-05-20 2014-12-01 김정훈 이진데이터 압축 및 압축해제 장치와 방법
KR101501507B1 (ko) * 2013-07-17 2015-03-12 김정훈 이진 데이터의 압축바코드 생성 및 이진 데이터 복원 방법과 장치

Also Published As

Publication number Publication date
KR20160134480A (ko) 2016-11-23

Similar Documents

Publication Publication Date Title
US7313751B2 (en) Dual mode decoder
JPH11500887A (ja) 遷移制御されたデジタルエンコード及び信号伝送システム
CN108768587B (zh) 编码方法、设备及可读存储介质
US7982640B2 (en) Digital signal transmitting apparatus and digital signal transmitting method
KR101723336B1 (ko) 이진데이터 압축 및 압축 해제 방법
CN113438052B (zh) 信号解码方法、装置、电子设备以及存储介质
JPH059975B2 (ko)
US7260151B2 (en) Dual phase pulse modulation system
CN116192993A (zh) 一种数据传输电路、恒流驱动芯片和显示系统
JP2007306212A (ja) 送信装置、受信装置、通信システム、及び通信方法
KR101648674B1 (ko) 이진데이터 압축 및 압축해제 방법
KR101670606B1 (ko) 이진데이터의 압축 및 압축해제 방법
JP4000564B2 (ja) 符号化装置およびその方法
KR101733299B1 (ko) 이진데이터의 실시간 압축 및 압축해제 방법
US6839006B1 (en) Communication device
US8004430B2 (en) Coding scheme for serial data communications
JP3192268B2 (ja) 信号処理システム
CN109639608B (zh) 数据编码的方法
CN113691349A (zh) Sigma-Delta调制器的数据编码解码方法及装置
JP4877133B2 (ja) プリコーダ装置及び送信装置
KR20170092183A (ko) 이진데이터의 압축전송방법 및 그 장치
CN113630211A (zh) 编码方法及存储介质
RU2021115172A (ru) Способ помехоустойчивого сжатия данных для передачи и хранения информации
CN118101127A (zh) 数据传输方法及装置、芯片、通信设备和存储介质
KR20170112612A (ko) 이진데이터의 압축전송방법(10type-10type연속형)

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right