일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치

申请号 KR1020140062515 申请日 2014-05-23 公开(公告)号 KR1020150134965A 公开(公告)日 2015-12-02
申请人 김정훈; 发明人 김정훈;
摘要 본발명은원본데이터와부호화데이터간의대응관계에관한맵핑정보를가지고있는부호화테이블을참조하여입력데이터를부호화하여부호화데이터를생성하는부호화부; 및상기부호화부에의해생성된부호화데이터를출력하는출력부를포함하되, 상기부호화부에의해부호화되는상기부호화데이터는복수의메인클러스터를포함하고, 상기복수의메인클러스터의각각은각 메인클러스터의최하위비트로부터연속된적어도 0개이상의 "1", 최상위비트로부터배치된 "10", 및상기연속된적어도 0개이상의 "1"과상기최상위비트로부터배치된 "10" 사이에배치되는적어도 0개이상의연속된 "0"을포함하는것을특징으로하는일반코드생성을위한데이터부호화장치에관한것이다.
权利要求
  • 원본 데이터와 부호화 데이터 간의 대응 관계에 관한 맵핑정보를 가지고 있는 부호화 테이블을 참조하여 입력 데이터를 부호화하여 부호화데이터를 생성하는 부호화부; 및
    상기 부호화부에 의해 생성된 부호화데이터를 출력하는 출력부를 포함하되,
    상기 부호화부에 의해 부호화되는 상기 부호화데이터는 복수의 메인 클러스터를 포함하고, 상기 복수의 메인 클러스터의 각각은 각 메인 클러스터의 최하위 비트로부터 연속된 적어도 0개 이상의 "1", 최상위비트로부터 배치된 "10", 및 상기 연속된 적어도 0개 이상의 "1"과 상기 최상위비트로부터 배치된 "10" 사이에 배치되는 적어도 0개 이상의 연속된 "0"을 포함하는 것을 특징으로 하는 일반 코드 생성을 위한 데이터 부호화 장치.
  • 제 1항에 있어서,
    원본 데이터로서 특정 범위의 정수를 부호화할 경우 상기 부호화 테이블은 상기 특정 범위의 정수의 시작 숫자, 끝 숫자 및 증가분에 대한 정보를 저장하고, 원본 데이터로서 특정 정수들을 부호화할 경우에는 상기 부호화 테이블은 상기 특정 정수 및 이에 대응하는 부호화 데이터를 저장하는 것을 특징으로 하는 데이터 부호화 장치.
  • 제 1항에 있어서,
    상기 부호화데이터는 미리 지정된 비트길이의 터미널 클러스터를 더 포함하고,
    상기 부호화데이터에 대응하여 부호화될 수 있는 원본 데이터의 갯수는 상기 각 메인클러스터에 의해 표현될 수 있는 데이터의 최대 갯수들과 상기 터미널 클러스터에 의해 표현될 수 있는 최대 데이터 갯수의 곱에 의해 결정되는 것을 특징으로 하는 일반 코드 생성을 위한 데이터 부호화 장치.
  • 제 3항에 있어서,
    상기 부호화데이터는 상기 복수의 메인 클러스터의 각각에 대응하는 복수의 서브 클러스터를 더 포함하고,
    상기 복수의 서브 클러스터의 각각은 대응하는 각 메인 클러스터의 최상위비트 앞에 배치되고, 상기 대응하는 각 메인 클러스터의 비트길이에 대응하는 비트길이 또는 상기 대응하는 각 메인 클러스터의 이진수의 값에 대응하는 비트길이를 갖는 것을 특징으로 하는 데이터 부호화장치.
  • 제 1항에 있어서,
    상기 부호화데이터는 헤드 클러스터를 더 포함하고,
    상기 헤드 클러스터의 비트길이는, 상기 각 메인 클러스터의 비트길이들의 합, 상기 각 메인 클러스터의 이진수값들의 합 및 미리 지정된 값 중 어느 하나에 의해 결정되는 것을 특징으로 하는 일반 코드 생성을 위한 데이터 부호화 장치.
  • 제 5항에 있어서,
    상기 부호화데이터는 미리 지정된 비트길이의 터미널 클러스터를 더 포함하고,
    상기 부호화데이터에 대응하여 부호화될 수 있는 원본 데이터의 갯수는 상기 각 메인클러스터에 의해 표현될 수 있는 데이터의 최대 갯수들, 상기 터미널 클러스터에 의해 표현될 수 있는 최대 데이터 갯수, 및 상기 헤드 클러스터에 의해 표현될 수 있는 최대 데이터 갯수의 곱에 의해 결정되는 것을 특징으로 하는 일반 코드 생성을 위한 데이터 부호화 장치.
  • 제 1항 내지 제 6항 중 어느 한 항에 있어서,
    상기 부호화부는 상기 부호화데이터에 상기 부호화 테이블을 결합하여 상기 출력부를 통해 출력하는 것을 특징으로 하는 일반 코드 생성을 위한 데이터 부호화 장치.
  • 제 7항에 기재된 일반 코드 생성을 위한 데이터 부호화 장치에 의해 생성된 부호화데이터를 복호화하는 데이터 복호화 장치로서,
    상기 결합되어 있는 부호화 테이블을 참조하여 상기 부호화데이터를 복호화하는 복호화부를 포함하는 것을 특징으로 하는 데이터 복호화 장치.
  • 제 1 내지 제 6항 중 어느 한 항에 기재된 일반 코드 생성을 위한 데이터 부호화 장치에 의해 생성된 부호화데이터를 복호화하는 데이터 복호화 장치로서,
    원본 데이터와 부호화 데이터 간의 대응 관계에 관한 맵핑정보를 가지고 있는 상기 부호화 테이블을 저장하고 있는 저장부; 및
    상기 저장부에 저장된 부호화테이블을 참조하여 상기 부호화데이터를 복호화하는 복호화부를 포함하는 것을 특징으로 하는 데이터 복호화 장치.
  • 说明书全文

    일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치{APPARATUS FOR DATA ENCODING FOR GENERATING UNIVERSAL CODE AND APPARATUS FOR DATA DECODING}

    본 발명은 일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치에 관한 것으로서, 보다 구체적으로는 간단한 연산과 하드웨어적 구성을 통해 데이터를 효율적으로 부호화할 수 있고, 부호화 데이터로부터 데이터를 복호화할 수 있도록 하는, 일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치에 관한 것이다.

    일반적으로, 임의의 정수값을 부호화하는 방법에 의해 정수값을 부호화하여 비트스트림을 발생시키고, 반대로 발생된 비트스트림을 복호화하여 원정수 값을 복원한다. 이렇게 부호화되는 코드를 일반 코드(universal code)라고 한다.

    본 발명의 배경기술은 대한민국 공개특허공보 제 1997-0049783호(1997.07.29 공개)에 개시되어 있다.

    본 발명이 이루고자하는 기술적 과제는, 일반 코드(universal code)를 생성하고 해독하는 데에 있어서 간단한 연산과 하드웨어적 구성을 통해 데이터를 효과적이고 효율적으로 부호화할 수 있고, 부호화 데이터로부터 데이터를 복호화할 수 있도록 하는, 일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치를 제공하는 데에 있다.

    본 발명의 일 측면에 따르면, 본 발명은 원본 데이터와 부호화 데이터 간의 대응 관계에 관한 맵핑정보를 가지고 있는 부호화 테이블을 참조하여 입력 데이터를 부호화하여 부호화데이터를 생성하는 부호화부; 및 상기 부호화부에 의해 생성된 부호화데이터를 출력하는 출력부를 포함하되, 상기 부호화부에 의해 부호화되는 상기 부호화데이터는 복수의 메인 클러스터를 포함하고, 상기 복수의 메인 클러스터의 각각은 각 메인 클러스터의 최하위 비트로부터 연속된 적어도 0개 이상의 "1", 최상위비트로부터 배치된 "10", 및 상기 연속된 적어도 0개 이상의 "1"과 상기 최상위비트로부터 배치된 "10" 사이에 배치되는 적어도 0개 이상의 연속된 "0"을 포함하는 것을 특징으로 하는 일반 코드 생성을 위한 데이터 부호화 장치를 제공한다.

    본 발명에서, 원본 데이터로서 특정 범위의 정수를 부호화할 경우 상기 부호화 테이블은 상기 특정 범위의 정수의 시작 숫자, 끝 숫자 및 증가분에 대한 정보를 저장하고, 원본 데이터로서 특정 정수들을 부호화할 경우에는 상기 부호화 테이블은 상기 특정 정수 및 이에 대응하는 부호화 데이터를 저장할 수 있다.

    본 발명에서, 상기 부호화데이터는 미리 지정된 비트길이의 터미널 클러스터를 더 포함하고, 상기 부호화데이터에 대응하여 부호화될 수 있는 원본 데이터의 갯수는 상기 각 메인클러스터에 의해 표현될 수 있는 데이터의 최대 갯수들과 상기 터미널 클러스터에 의해 표현될 수 있는 최대 데이터 갯수의 곱에 의해 결정되는 것을 특징으로 한다. 또한, 상기 부호화데이터는 상기 복수의 메인 클러스터의 각각에 대응하는 복수의 서브 클러스터를 더 포함하고, 상기 복수의 서브 클러스터의 각각은 대응하는 각 메인 클러스터의 최상위비트 앞에 배치되고, 상기 대응하는 각 메인 클러스터의 비트길이에 대응하는 비트길이 또는 상기 대응하는 각 메인 클러스터의 이진수의 값에 대응하는 비트길이를 가질 수 있다.

    본 발명에서, 상기 부호화데이터는 헤드 클러스터를 더 포함하고, 상기 헤드 클러스터의 비트길이는, 상기 각 메인 클러스터의 비트길이들의 합, 상기 각 메인 클러스터의 이진수값들의 합 및 미리 지정된 값 중 어느 하나에 의해 결정되는 것을 특징으로 한다.

    본 발명에서, 상기 부호화데이터는 미리 지정된 비트길이의 터미널 클러스터를 더 포함하고, 상기 부호화데이터에 대응하여 부호화될 수 있는 원본 데이터의 갯수는 상기 각 메인클러스터에 의해 표현될 수 있는 데이터의 최대 갯수들, 상기 터미널 클러스터에 의해 표현될 수 있는 최대 데이터 갯수, 및 상기 헤드 클러스터에 의해 표현될 수 있는 최대 데이터 갯수의 곱에 의해 결정되는 것을 특징으로 한다.

    본 발명에서, 상기 부호화부는 상기 부호화데이터에 상기 부호화 테이블을 결합하여 상기 출력부를 통해 출력할 수 있다.

    본 발명의 다른 측면에 따르면, 본 발명은 데이터 부호화 장치에 의해 생성된 부호화데이터를 복호화하는 데이터 복호화 장치로서, 상기 결합되어 있는 부호화 테이블을 참조하여 상기 부호화데이터를 복호화하는 복호화부를 포함하는 것을 특징으로 하는 데이터 복호화 장치를 제공한다.

    본 발명의 또 다른 측면에 따르면, 본 발명은 데이터 부호화 장치에 의해 생성된 부호화데이터를 복호화하는 데이터 복호화 장치로서, 원본 데이터와 부호화 데이터 간의 대응 관계에 관한 맵핑정보를 가지고 있는 상기 부호화 테이블을 저장하고 있는 저장부; 및 상기 저장부에 저장된 부호화테이블을 참조하여 상기 부호화데이터를 복호화하는 복호화부를 포함하는 것을 특징으로 하는 데이터 복호화 장치를 제공한다.

    본 발명에 따른 일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치는 간단한 연산과 하드웨어적 구성을 통해 데이터를 효과적이고 효율적으로 부호화할 수 있고, 부호화 데이터로부터 데이터를 복호화할 수 있도록 함으로써, 데이터 부호화 및 복호화의 성능 및 활용도를 증가시킬 수 있다.

    도 1은 본 발명에 의한 일 실시예에 따른 일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치의 구성을 도시한 블록도이다.
    도 2 내지 5는 본 발명에 의한 일 실시예에 따른 일반 코드 생성을 위한 데이터 부호화장치에 의해 부호화되는 조합코드의 예들을 개념적으로 도시한 것이다.
    도 6은 1차 클러스터 부호화, 2차 클러스터 부호화 및 3차 클러스터 부호화를 각각 수행함에 있어 부호화 데이터의 갯수 대비 부호화 데이터의 비트길이 간의 관계를 도시한 것이다.

    아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면부호를 붙였다.

    명세서 전체에서, 어떤 부분이 어떤 구성 요소를 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.

    도 1은 본 발명에 의한 일 실시예에 따른 일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치의 구성을 도시한 블록도이고, 도 2 내지 5는 본 발명에 의한 일 실시예에 따른 데이터 부호화장치에 의해 부호화되는 조합코드의 예들을 개념적으로 도시한 것이며, 도 6은 1차 클러스터 부호화, 2차 클러스터 부호화 및 3차 클러스터 부호화를 각각 수행함에 있어 부호화 데이터의 갯수 대비 부호화 데이터의 비트길이 간의 관계를 도시한 것으로서, 이를 참조하여 본 발명에 따른 실시예를 설명하면 다음과 같다.

    도 1에 도시된 바와 같이, 본 실시예에 따른 일반 코드 생성을 위한 데이터 부호화 장치(100, 이하 "데이터 부호화 장치"라 함)는 부호화부(110), 출력부(120) 및 저장부(130)를 포함한다.

    저장부(130)는 원본 데이터와 부호화 데이터 간의 대응 관계에 관한 맵핑정보를 가지고 있는 부호화 테이블을 저장하며, 그 외에 시스템의 동작이나 부호화 알고리즘 등에 관련된 데이터를 더 저장할 수 있다.

    부호화부(110)는 저장부(130)에 저장되어 있는 상기 부호화 테이블을 참조하여 입력 데이터를 부호화하여 부호화데이터를 생성하여 출력부(120)에 제공한다.

    그리고, 출력부(120)는 부호화부(110)에 의해 생성된 상기 부호화데이터를 데이터 복호화장치(200) 또는 다른 장치로 출력한다.

    또한, 도 1에 도시된 바와 같이, 데이터 복호화 장치(200)는 데이터 부호화 장치(200)에 의해 생성된 부호화데이터를 복호화하는 장치로서, 입력부(210), 복호화부(220) 및 저장부(230)를 포함한다.

    입력부(210)는 데이터 부호화 장치(100)의 출력부(120) 또는 다른 장치로부터 입력되는 부호화 데이터를 입력받아 복호화부(220)에 제공한다.

    저장부(230)는 원본 데이터와 부호화 데이터 간의 대응 관계에 관한 맵핑정보를 가지고 있는 부호화 테이블을 저장한다. 여기서, 데이터 복호화장치(200)의 저장부(230)가 저장하고 있는 부호화 테이블은 데이터 부호화 장치(100)의 저장부(130)가 저장하고 있는 부호화 테이블과 동일한 정보를 가지고 있다.

    복호화부(220)는 저장부(230)에 저장된 상기 부호화테이블을 참조하여 상기 부호화데이터를 복호화하여 원본 데이터를 복원한다.

    이와 같이 구성된 본 실시예의 동작 및 작용을 도 1 내지 도 5를 참조하여 구체적으로 설명한다.

    도 1에 도시된 바와 같이, 저장부(130)는 원본 데이터와 부호화 데이터 간의 대응 관계에 관한 맵핑정보를 가지고 있는 부호화 테이블을 저장하고 있는데, 부호화부(110)는 이러한 부호화 테이블을 참조하여 입력 데이터를 부호화하여 부호화데이터를 생성한다.

    이 때 부호화데이터의 생성시, 부호화부(110)는 도 2에 도시된 바와 같이 적어도 복수의 메인 클러스터(메인클러스터1, 2,...)를 포함하도록 부호화데이터를 생성한다.

    좀 더 구체적으로 설명하면, 상기 부호화데이터는 복수의 메인 클러스터를 포함하는 데이터로서, 메인 클러스터의 각각은 " 10 ", " 10 11(10/11)", " 10 00 111 (10/00/111)" 등과 같이 각 메인 클러스터의 최하위 비트로부터 연속된 적어도 0개 이상의 "1", 최상위비트로부터 배치된 "10", 및 상기 연속된 적어도 0개 이상의 "1"과 상기 최상위비트로부터 배치된 "10" 사이에 배치되는 적어도 0개 이상의 연속된 "0"을 포함하여 구성된다. 이러한 조건을 만족하는 메인 클러스터 중 비트길이가 가장 작은 이진수는 "10"이 되며, 그 이후로 100, 101, 1000, 1001, 1011, 10000, 10001, 10011, 10111, 100000...와 같이 순차적으로 나열할 수 있다. 여기서 알 수 있는 바와 같이, 메인 클러스터는 맨 앞에 "10"을 가지고 있어야 하며, 이후 비트자릿수를 늘려 가면서 최하위비트로부터 "1"의 갯수를 늘려가되 최상위비트 쪽에 "10"은 반드시 남아 있어야 하고 " 10 1111"과 같이 " 10 " 다음에 더 이상 "0"이 존재하지 않게 되면 비트자릿수를 한자리 늘려서 "1000000"로 넘어가게 된다.

    이러한 메인 클러스터를 비트 길이가 작은 것부터 순차적으로 나열하여 각각에 대해 원본데이터를 대응시키면 표 1의 예와 같이 대응시킬 수 있다.

    원본 메인 클러스터
    1 10
    2 100
    3 101
    4 1000
    5 1001
    6 1011
    7 10000
    8 10001
    9 10011
    10 10111
    11 100000
    12 100001
    13 100011
    14 100111
    15 101111
    16 1000000
    17 1000001
    18 1000011
    19 1000111
    20 1001111
    21 1011111
    22 10000000
    23 10000001
    24 10000011
    25 10000111
    26 10001111
    27 10011111
    28 10111111
    29 100000000
    30 100000001
    ... ...
    10000 1000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

    만약 십진수 1부터 십진수 10000까지의 값을 하나의 각 메인 클러스터에 대응시키려고 하면 2비트자리의 메인클러스터에서 108비트자리까지의 메인클러스터가 필요하게 되므로, 하나의 메인클러스터만으로 원본 데이터를 부호화하기 위해서는 너무 긴 비트자리의 숫자가 필요하게 된다. 물론 적은 갯수의 숫자를 부호화하는 경우에는 1개의 메인클러스터를 조합하여 부호화데이터를 이용하는 경우가 보다 더 효율적이지만, 많은 갯수의 숫자를 부호화하는 경우에는 효율이 떨어진다. 도 6은 1차 클러스터 부호화(1개의 메인 클러스터만으로 부호화)하는 경우와 2차,3차(2개 또는 3개의 메인 클러스터들로 부호화하는 경우) 클러스터 부호화에 있어서, 1~1000(x축)까지의 정수에 대하여 각각 부호화된 데이터의 비트길이(y축)의 결과를 보이고 있다. 1차 클러스터 부호화에 비해서, 차수가 올라갈수록 큰 숫자(많은 갯수의 데이터)에 대해서는 비트길이 절감효과가 큼을 알 수 있다.

    이에 본 실시예에 따른 부호화부(110)는 도 2에 도시된 바와 같이 적어도 2개 이상의 복수의 메인 클러스터를 조합하여 부호화데이터를 생성한다. 2개의 메인 클러스터를 조합하여 부호화데이터를 생성하면 표 2와 같이 된다.

    원본 부호화 데이터 비트길이
    1 10 10 4
    2 100 10 5
    3 101 10 5
    4 1000 10 6
    5 1001 10 6
    6 1011 10 6
    7 10000 10 7
    8 10001 10 7
    9 10011 10 7
    10 10111 10 7
    11 100000 10 8
    12 100001 10 8
    13 100011 10 8
    14 100111 10 8
    15 101111 10 8
    16 1000000 10 9
    17 1000001 10 9
    18 1000011 10 9
    19 1000111 10 9
    20 1001111 10 9
    21 1011111 10 9
    22 10000000 10 10
    23 10000001 10 10
    24 10000011 10 10
    25 10000111 10 10
    26 10001111 10 10
    27 10011111 10 10
    28 10111111 10 10
    29 100000000 10 11
    30 100000001 10 11
    31 100000011 10 11
    32 100000111 10 11
    33 100001111 10 11
    34 100011111 10 11
    35 100111111 10 11
    36 101111111 10 11
    37 1000000000 10 12
    38 1000000001 10 12
    39 1000000011 10 12
    40 1000000111 10 12
    41 1000001111 10 12
    42 1000011111 10 12
    43 1000111111 10 12
    .
    .
    .
    .
    .
    .
    .
    .
    .

    표 2에 표시된 바와 같이 2개의 메인클러스터 각각에 대하여 비트길이가 작은 수부터 순차적으로 이진수를 만들어 가게 된다. 이렇게 여러 개의 클러스터를 조합하게 되면, 전체적으로 단일 클러스터만으로 특정 정수값을 부호화한 결과값보다는 부호화 결과가 짧은 비트길이를 형성하게 된다.

    그런데, 표 2의 경우에는, 처음에 도2 의 메인클러스터 2(오른쪽 메인클러스터)를 "10"으로 고정하고, 메인클러스터 1(왼쪽 메인클러스터)을 "10"에서 계속 다음 단계인 "100", "101", "1000", "1001", "1011",... 순으로 선택하였는바, 이보다 더 효과적으로 2개의 메인클러스터를 조합하여 부호화를 수행할 수 있는 방법도 있을 수 있다. 이러한 방법의 일 예로서, 각각의 조합에 사용되는 최대비트 길이의 메인클러스터를 부호화하고자 하는 원본 데이터의 갯수에 따라 선택하는 것을 생각해 볼 수 있다. 예를 들어, 100개의 원본 데이터에 대하여 부호화데이터를 만들려고 하는 경우, 표 2에서와 같은 방법보다 전체 N개의 원본 데이터에 대하여 X개의 메인클러스터 조합을 이용하려 한다면,

    이상의 최소한의 자연수 갯수만큼의 메인클러스터를 사용하면 된다.

    2개의 메인클러스터를 사용하는 경우, 100 1/2 =10 이고 10 이상의 최소 자연수는 10이므로, 표 1에 표시된 메인클러스터를 기준으로 최소 비트길이를 갖는 상위 10개의 메인클러스터들 가운데 2개를 중복을 허용하여 추출하여 2개의 메인클러스터의 조합을 만들고, 이 조합에 의해 생성된 부호화 데이터를 짧은 비트길이 순서대로 상위 N개를 취하여 최종 부호화 데이터로서 사용하면 된다.

    즉, 표 1에 나타난 바와 같이 10개(100 1/2 =10)의 원본 데이터를 나타내기 위해서는 비트길이가 짧은 순서대로 "10"~"10111"까지의 메인클러스터가 필요하다. 그리고, 이러한 메인클러스터들을 중복을 허락하여 2개씩 조합하게 되면 10*10=100 개의 조합된 부호화 데이터가 생성되고, 이 부호화 데이터를 비트길이에 따라 오름차순으로 정렬한 뒤, 비트길이(비트수)가 짧은 순으로 상위 100개만을 추출하면, 원본 데이터 100개에 대하여 각각 부호화할 수 있게 되는 것이다. 물론 이때 순차적으로 원본데이터 각각과 부호화 데이터를 매핑할 수도 있고, 원본데이터의 출현빈도수에 따라 부호화 데이터의 비트길이를 고려하여 가장 짧은 비트길이를 가진 부호화 데이터에 가장 많은 빈도수가 나타나는 원본데이터를 매핑할 수도 있다.

    또 다른 예로써, 만약에 50개의 원본데이터를 맵핑시키기 위하여 메인클러스터 2개를 조합해야 한다면,

    = 7.071 으로서, 7.07개의 클러스터를 조합해야 하는데 클러스터의 개수는 자연수이므로, 상기 이상의 최소의 자연수인 8에 따라 8개의 메인클러스터를 2개씩 중복을 허용하여 조합해야 한다.

    한편, 이때 이렇게 생성된 2개의 메인클러스터의 조합으로 이루어진 부호화데이터에 의해 원본 데이터를 부호화하고자 할 때, 부호화하고자 하는 원본 데이터의 빈도에 따라 빈도가 적은 경우에 비트길이(비트수)가 긴 부호화 데이터를 할당하고 빈도가 많은 경우에 비트길이가 짧은 부호화 데이터를 할당 할 수 있고, 이러한 정보는 저장부(130)에 저장을 할 수 있다. 혹은 단순하게 조합으로 생성된 100개의 부호화 데이터를 비트길이 순서대로 오름차순 또는 내림차순 정렬하여, 순차적으로 원본 데이터를 매핑할 수도 있고 이러한 매핑에 관한 정보 또한 저장부(130)에 저장할 수 있다.

    예를 들어, 2개 메인클러스터를 조합하기 위하여 적은 비트수를 차지하는 상위 10개의 클러스터를 표 3과 같이 선별하였고, 이를 2개씩 조합을 하면(중복 허용)

    1 10
    2 100
    3 101
    4 1000
    5 1001
    6 1011
    7 10000
    8 10001
    9 10011
    10 10111

    아래와 같이 100개의 부호화 데이터가 생성된다. 이 때 생성된 결과에 대해서 차지하는 전체 비트길이(비트수)에 따라 오름차순 또는 내림차순으로 정렬한 뒤(왜냐하면 아래에서 A,B와 같은 경우 생성순서는 A가 먼저이나 비트길이는 B가 더 작아서 B의 부호화가 더 효율적인 결과를 가져오기 때문임), 1~100까지의정수를 매핑할 수 있고, 또는 가장 많은 출현 빈도수를 가진 원본 데이터에 가장 짧은 비트길이를 가진 조합(예를 들면, "1010")을 매핑하고, 가장 출현 빈도수가 적은 원본 데이터에 가장 긴 비트길이를 가진 조합(예를 들면, "1011110111")을 할당할 수 있다.

    10 10

    10 100

    10 101

    10 1000

    10 1001

    10 1011

    10 10000 -----------> A (7비트)

    10 10001

    10 10011

    10 10111

    100 10 ------------> B (5비트)

    100 100

    100 101

    100 1000

    100 1001

    100 1011

    100 10000

    100 10001

    100 10011

    100 10111

    ......

    그리고, 이를 차지하는 비트길이에 따라 내림차순 또는 오름차순 정렬하면, 아래와 같은 형태가 예시적으로 될 것이다. 동일한 비트길이를 가진 부호화 데이터의 정렬은 전산기의 특성에 따라 달라질 수 있으며, 예를 들어 송신기와 수신기 사이에서 별도의 전산기의 특성을 고려하여 부호화 및 복호화 작업이 수행될 수 있다. 다음과 같은 형태가 상기 예의 형태보다 더 효율적인 2개 메인클러스터 조합 부호화 결과가 된다.

    10 10

    10 100 ; 동일비트길이(예 5비트)에 대해 전산기의 특성에 따라 정렬순서는 달라질 수 있음.

    10 101 ; 동일비트길이(예 5비트)에 대해 전산기의 특성에 따라 정렬순서는 달라질 수 있음.

    100 10 ------------ B

    100 100

    100 101 ; 동일 비트길이(예 6비트)에 대해 전산기의 특성에 따라 정렬순서는 달라질수 있음

    10 1000 ; 동일 비트길이(예 6비트)에 대해 전산기의 특성에 따라 정렬순서는 달라질수 있음

    10 1001

    10 1011

    100 1000

    100 1001

    100 1011

    ....

    10 10000 -----------A

    10 10001

    10 10011

    10 10111

    또한, 본 실시예에 따른 부호화데이터는 메인클러스터의 각각이 가지고 있는 유일 복호성에 의해 별도의 식별자를 추가하지 않고도 각각의 메인클러스터로 분리될 수 있다. 이 경우 조합된 2개의 메인 클러스터는 메인클러스터 자체적으로 가지고 있는 성질(유일 복호성)에 의해 후술하는 복호화부(220)에서 2개의 각 메인 클러스터로 자연스럽게 분리될 수 있다. 즉, 상술한 바와 같이 각 메인 클러스터는 최상위비트쪽에 "10"을 포함하고 있기 때문에 뒤에 있는 메인클러스터의 "10" 앞에서 자연스럽게 분리될 수 있는 것이다. 가령 "101111000111"과 같은 부호화데이터를 예로 들면 이 데이터는 "10111/1000111"와 같이 분리될 수 있는 것이다.

    한편, 상기 예를 더 확장하여, 만약 상기 부호화 데이터가 3개의 메인클러스터를 포함하도록 할 수도 있는데, 이 경우 10000개의 원본 데이터를 부호화하고자 한다면,

    = 10 이고, 10이상의 최소한의 자연수의 개수만큼의 메인클러스터를 취하라는 공식에 따라, 효율적 부호화를 위해 비트길이가 짧은 상위 10개(표 1참고)의 메인클러스터 각각을 중복을 허용하여 3개씩 조합하여 사용하면 된다. 이에 따라, 이 부호화데이터가 나타낼 수 있는(맵핑할 수 있는) 원본 데이터의 갯수는 10*10*10 = 1000개가 된다.

    만약에 9000개의 데이터를 부호화하고자 한다면, 표 1 상에서 비트길이가 짧은 순서대로

    이상인 최소한의 자연수 만큼의 메인 클러스터를 취한다는 공식에 따라, 상기 최소의 자연수만큼의 표 1 상에서의 메인클러스터를 사용하여 중복 허용하여 3번씩 조합하여 사용하면 된다.

    물론, 데이터 부호화장치(100)는 부호화하고자 하는 원본 데이터의 갯수에 따라 적정한 메인클러스터의 갯수 및 각 메인클러스터의 최대비트길이를 자동으로 산출할 수도 있다.

    이와 같이, 부호화데이터의 생성시, 부호화부(110)는 적어도 2개 이상의 메인 클러스터(메인클러스터1, 2,...)를 조합하여 부호화데이터를 생성할 수 있다.

    저장부(130)는 표 2와 같이 원본 데이터와 부호화 데이터 간의 대응 관계에 관한 맵핑정보를 가지고 있는 부호화 테이블을 저장하고 있으며, 부호화부(110)는 이러한 부호화 테이블을 참조하여 입력 데이터를 부호화하여 부호화데이터를 생성한다. 참고로, 표 2에서는 1부터 43까지의 십진수를 각 부호화데이터에 맵핑한 예를 나타내었지만, 각 부호화데이터에 대응하여 맵핑하기 위한 원본데이터는 이러한 일련의 십진수에만 한정되는 것은 아니므로, 어떠한 종류의 원본데이터에 대해서도 부호화데이터를 맵핑하여 이를 부호화테이블로 저장할 수 있다.

    이 때, 이를 송신부(데이터 부호화장치)와 수신부(데이터 복호화장치)에서 서로 공통의 알고리즘을 이용하여 각각 저장부(130, 230)에 부호화 테이블을 미리 생성하여 둔 뒤, 부호화 데이터만을 송수신하여 저장부(230)의 정보를 통해 복호화하는 것도 가능하다. 즉, 송수신 데이터에서 저장부(130, 230)의 매핑 정보는 직접 송수신 되지 않을 수도 있다.

    이와 같이 부호화부(110)가 부호화데이터를 생성하면, 출력부(120)는 이러한 부호화데이터를 데이터 복호화장치(200) 또는 다른 장치로 출력한다.

    이어서, 데이터 복호화 장치(200)는 데이터 부호화 장치(100)에 의해 생성된 부호화데이터를 복호화하는바 이를 구체적으로 살펴 보면, 먼저 입력부(210)는 데이터 부호화 장치(100)의 출력부(120)로부터 출력되는 부호화 데이터를 입력받아 복호화부(220)에 제공한다.

    그러면, 복호화부(220)는 저장부(230)에 저장된 상기 부호화테이블을 참조하여 상기 부호화데이터를 복호화하여 원본 데이터를 복원한다. 데이터 복호화장치(200)의 저장부(230)가 저장하고 있는 부호화 테이블은 데이터 부호화 장치(100)의 저장부(130)가 저장하고 있는 부호화 테이블과 동일한 정보를 가지고 있어야 하며, 이를 통해 복호화부(220)는 정확한 원본 데이터를 복호화하여 복원할 수 있다. 이 때, 이를 송신부(데이터 부호화장치)와 수신부(데이터 복호화장치)에서 서로 공통의 알고리즘을 이용하여 각각 저장부(130, 230)에 부호화 테이블을 미리 생성하여 둔 뒤, 부호화 데이터만을 송수신하여 저장부(230)의 정보를 통해 복호화하는 것도 가능하다. 즉 송수신 데이터에서 상기 매핑 정보는 직접 송수신되지 않을수 도 있다.

    한편, 상기에서는 부호화데이터가 복수의 메인 클러스터를 포함하여 구성되는 경우에 대하여 설명하였으나, 부호화부(110)에 의해 생성되는 부호화데이터는 이에 한정되지 않고 다음과 같은 다양한 형태로 확장될 수 있다.

    일 예로, 부호화부(110)는 도 3에 도시된 바와 같이 상기 부호화데이터가 상기 복수의 메인 클러스터 외에 미리 지정된 비트길이의 터미널 클러스터를 더 포함하도록 할 수 있다. 이 터미널 클러스터는 미리 지정된 비트길이의 이진수로 이루어지는데, 가령 k비트길이의 터미널 클러스터가 채용된다면 이 터미널 클러스터를 통하여 나타낼 수 있는 데이터의 갯수는 2 k 이 된다.

    이 때 부호화데이터에 대응하여 부호화될 수 있는 원본 데이터의 갯수는 각 메인클러스터에 의해 표현될 수 있는 데이터의 최대 갯수들과 상기 터미널 클러스터에 의해 표현될 수 있는 최대 데이터 갯수의 곱에 의해 결정된다. 예를 들어, 만약 최대비트길이가 5인 2개의 메인 클러스터에 3비트길이의 터미널 클러스터가 추가로 채용된다면, 이러한 부호화데이터를 통해 맵핑하여 부호화할 수 있는 원본 데이터의 갯수는 10*10*8 = 800이 된다. 이를 통해 부호화부(110)는 보다 짧은 비트길이로 보다 많은 데이터를 부호화할 수 있게 된다. 물론, 데이터 부호화장치(100)는 부호화하고자 하는 원본 데이터의 갯수에 따라 적정한 메인클러스터의 갯수, 각 메인클러스터의 최대비트길이, 및 터미널 클러스터의 비트길이를 자동으로 산출할 수도 있다. 또한, 이러한 메인 클러스터와 터미널 클러스터 간의 조합 규칙은 데이터 부호화장치(100)와 데이터 복호화장치(200)에 동일하게 규정되어 있거나, 데이터 부호화장치(100) 등으로부터 데이터 복호화장치(200)에 제공되어야 한다는 것은 당연하다 할 것이다.

    또 다른 예로, 부호화부(110)는 도 4에 도시된 바와 같이 상기 부호화데이터가 상기 복수의 메인 클러스터와 터미널 클러스터 외에 헤드 클러스터를 추가로 더 포함하도록 할 수 있다. 이 헤드 클러스터는 미리 설정된 규칙에 따라 그 비트길이가 설정되도록 할 수 있다.

    예를 들어, 헤드 클러스터의 비트길이는 각 메인 클러스터의 비트길이들의 합에 해당하는 비트길이를 가지도록 할 수 있다(즉, 도 4의 예에서 메인클러스터가 2개이고 메인클러스터1의 비트길이가 5이고 메인클러스터2의 비트길이가 2라면 헤드클러스터의 비트길이는 7이 된다). 또한, 헤드 클러스터의 비트길이가 각 메인 클러스터의 이진수값들의 합에 해당하는 비트길이를 가지도록 할 수도 있고, 미리 지정된 값에 해당하는 비트길이를 가지도록 할 수도 있으며, 이 외에도 다른 다양한 규칙에 따라 헤드클러스터의 비트길이가 정해지도록 할 수 있다. 이러한 헤드 클러스터 또한 부호화데이터를 통해 부호화하고자 하는 원본 데이터의 수를 확장하기 위한 것으로서, 가령 n비트길이의 헤드 클러스터가 채용된다면 2 n 배에 해당하는 만큼 데이터의 수를 더 확장할 수 있게 된다.

    이 때 부호화데이터에 대응하여 부호화될 수 있는 원본 데이터의 갯수는 각 메인클러스터에 의해 표현될 수 있는 데이터의 최대 갯수들과 상기 터미널 클러스터와 헤드 클러스터에 의해 표현될 수 있는 최대 데이터 갯수의 곱에 의해 결정된다. 이를 통해 부호화부(110)는 보다 짧은 비트길이로 보다 많은 데이터를 부호화할 수 있게 된다. 물론, 데이터 부호화장치(100)는 부호화하고자 하는 원본 데이터의 갯수에 따라 적정한 메인클러스터의 갯수, 각 메인클러스터의 최대비트길이, 터미널 클러스터의 비트길이, 및 헤드 클러스터의 비트길이를 자동으로 산출할 수도 있다.

    물론, 이 경우에도 메인 클러스터, 헤드 클러스터 및 터미널 클러스터 간의 조합 규칙은 데이터 부호화장치(100)와 데이터 복호화장치(200)에 동일하게 규정되어 있거나 제공되어야 한다.

    또한, 상기에서는 복수의 메인클러스터에 터미널 클러스터와 헤드클러스터를 모두 채용하는 것에 대해 설명했지만, 실시예에 따라서는 복수의 메인클러스터에 헤드클러스터만을 채용하는 것도 가능할 것이다.

    또 다른 실시예로서, 상기 부호화데이터는 도 5에 도시된 바와 같이 복수의 메인 클러스터와 터미널 클러스터 외에, 상기 복수의 메인 클러스터의 각각에 대응하는 복수의 서브 클러스터를 더 포함하도록 할 수도 있다. 이 복수의 서브 클러스터의 각각은 도 5에 도시된 바와 같이 대응하는 각 메인 클러스터의 최상위비트 앞에 배치된다. 각 서브 클러스터는 대응하는 각 메인 클러스터의 비트길이에 대응하는 비트길이 또는 상기 대응하는 각 메인 클러스터의 이진수의 값에 대응하는 비트길이를 갖도록 할 수도 있고, 그 외에 다른 규칙이나 사용자 지정에 대응하는 비트길이를 갖도록 할 수도 있다. 물론, 도 5와는 달리 터미널 클러스터를 포함하지 않고, 복수의 메인클러스터에 복수의 서브클러스터만 채용하여 부호화데이터를 생성하는 것도 가능할 것이다.

    한편, 상술한 예에서는, 부호화부(110)가 부호화데이터만을 생성하여 출력부(120)를 통해 출력하는 경우에 대해 설명했으나, 부호화부(110)는 부호화데이터에 상술한 부호화 테이블을 결합하여 출력부(120)를 통해 출력하도록 구현될 수도 있다. 이것은 데이터 복호화장치(200)에 부호화 테이블이 미리 저장되어 있지 않은 경우를 위한 것으로서, 데이터 복호화장치(200)의 저장부(230)의 저장공간이 충분하지 않거나 상기 부호화 테이블을 미리 전송하여 저장하기 곤란한 환경이나 조건에 있는 경우가 이에 해당된다. 이 경우, 데이터 복호화 장치(200)의 복호화부(220)는 데이터 부호화장치(100)로부터 전송된 결합데이터로부터 부호화데이터와 부호화 테이블를 분리하여, 분리된 부호화 테이블을 참조하여 상기 부호화데이터를 복호화할 수 있다.

    이상 살펴 본 바와 같이, 본 실시예에 따른 일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치는 간단한 연산과 하드웨어적 구성을 통해 데이터를 효과적이고 효율적으로 부호화할 수 있고, 부호화 데이터로부터 데이터를 복호화할 수 있도록 함으로써, 데이터 부호화와 복호화의 성능 및 활용도를 증가시킬 수 있다.

    이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

    100 : 데이터 부호화 장치
    110 : 부호화부
    120 : 출력부
    130 : 저장부
    200 : 데이터 복호화 장치
    210 : 입력부
    220 : 복호화부
    230 : 저장부

    QQ群二维码
    意见反馈