KR101734515B1 - 데이터 부호화 및 복호화 방법과 장치 - Google Patents

데이터 부호화 및 복호화 방법과 장치 Download PDF

Info

Publication number
KR101734515B1
KR101734515B1 KR1020160068431A KR20160068431A KR101734515B1 KR 101734515 B1 KR101734515 B1 KR 101734515B1 KR 1020160068431 A KR1020160068431 A KR 1020160068431A KR 20160068431 A KR20160068431 A KR 20160068431A KR 101734515 B1 KR101734515 B1 KR 101734515B1
Authority
KR
South Korea
Prior art keywords
code
universal code
universal
binary
order
Prior art date
Application number
KR1020160068431A
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 KR1020160068431A priority Critical patent/KR101734515B1/ko
Application granted granted Critical
Publication of KR101734515B1 publication Critical patent/KR101734515B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • H03M5/02Conversion to or from representation by pulses
    • 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/55Compression Theory, e.g. compression of random number, repeated compression

Landscapes

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

Abstract

본 발명은 부호화부가 원본 데이터를 입력받는 입력단계; 상기 부호화부가 상기 원본 데이터에 대응하는 유니버설 코드 및 바이너리 코드를 생성하는 단계; 및 상기 부호화부가 상기 유니버설 코드와 상기 바이너리 코드를 조합하여 조합 유니버설 코드를 생성하는 단계를 포함하되, 상기 유니버설 코드는 해당 유니버설 코드의 최하위비트의 "01", n개 이상(n≥0)의 연속된 "1", 및 상기 최하위비트의 "01"과 상기 n개 이상(n≥0)의 연속된 "1" 사이에 배치된 적어도 p개 이상(p≥0)의 "0"을 포함하여 구성되고, 상기 바이너리 코드는, 상기 유니버설 코드를 오름차순으로 정렬했을 때의 순번 M과 미리 설정된 외부변수 S에 근거하여 얻어지는 값을 그 비트길이로 갖는 이진수인 것을 특징으로 하는 데이터 부호화방법에 관한 것이다.

Description

데이터 부호화 및 복호화 방법과 장치{DATA ENCODING AND DECODING METHOD AND APPARATUS}
본 발명은 데이터의 부호화 및 복호화 방법과 장치에 관한 것으로, 더 구체적으로는 미리 설정된 규칙에 따라 얻어지는 유니버설 코드와 바이너리 코드를 통해 원본 데이터에 대해 부호화 및 복호화를 수행할 수 있도록 하는 데이터의 부호화 및 복호화 방법과 장치에 관한 것이다.
허프만 부호화(Huffman coding)는 무손실 압축에 쓰이는 엔트로피 부호화의 일종으로, 데이터 문자의 등장 빈도에 따라서 다른 길이의 부호를 사용하는 알고리즘이다. 1952년 당시 박사과정 학생이던 데이비드 허프만이 《A Method for the Construction of Minimum-Redundancy Codes》[1]란 제목의 논문으로 처음 발표했다.
허프만 부호화는 문자들의 빈도로부터 접두 부호(어떤 한 문자에 대한 부호가 다른 부호들의 접두어가 되지 않는 부호)를 만들어 내는 알고리즘으로, 적게 나오는 문자일수록 더 긴 부호를 쓰고 많이 나올수록 더 짧은 부호를 쓴다. 허프만 부호화는 주어진 빈도에 대해서 최적의 접두 부호를 만들어 내며, 이 과정은 빈도가 정렬되어 있을 경우 O(n)만에 가능하다. 각 문자들의 빈도가 2의 거듭제곱 꼴이거나 모두 같을 경우 이 접두 부호는 간단한 이진 블록 부호와 동일하다.
이외에도 무손실 압축기술로는 rice-golomb 코드(H.264에 사용되는 무손실 부호화 압축코드), tunstall 코드, golomb 코드, rice 코드 등이 있다.
그런데, 이러한 종래의 부호화/복호화 방법 또는 장치에서는, 부호화 또는 복호화하는 과정에서 비교적 복잡한 연산이나 처리시간이 소요되고, 부호화나 복호화의 효율, 보안성, 에러에 대한 강인성이 떨어지는 문제점이 있었다.
본 발명의 배경기술은 대한민국 공개특허공보 제 2013-0022321호(2013. 3. 6 공개)에 개시되어 있다.
본 발명이 이루고자하는 기술적 과제는, 미리 설정된 규칙에 따라 얻어지는 유니버설 코드와 바이너리 코드를 통해 원본데이터를 부호화 및 복호화함으로써, 비교적 간단한 연산을 통해서도 높은 부호화 효율을 갖는, 데이터의 부호화 및 복호화 방법과 장치를 제공하는 데에 있다.
본 발명의 일 측면에 따르면, 본 발명은 부호화부가 원본 데이터를 입력받는 입력단계; 상기 부호화부가 상기 원본 데이터에 대응하는 유니버설 코드 및 바이너리 코드를 생성하는 단계; 및 상기 부호화부가 상기 유니버설 코드와 상기 바이너리 코드를 조합하여 조합 유니버설 코드를 생성하는 단계를 포함하되,
상기 유니버설 코드는 해당 유니버설 코드의 최하위비트의 "01", n개 이상(n≥0)의 연속된 "1", 및 상기 최하위비트의 "01"과 상기 n개 이상(n≥0)의 연속된 "1" 사이에 배치된 적어도 p개 이상(p≥0)의 "0"을 포함하여 구성되고, 상기 바이너리 코드는, 상기 유니버설 코드를 비트길이가 증가하는 순으로 정렬하되 비트길이가 같은 경우에는 그 값이 증가하는 순으로 정렬했을 때 정해지는 순번 M과, 미리 설정된 외부변수 S에 근거하여 얻어지는 값을 그 비트길이로 갖는 이진수인 것을 특징으로 하는 데이터 부호화방법을 제공한다.
본 발명에서, 상기 순번 M인 유니버설 코드는, 제 K군(K≥1)에 속하되 오름차순으로 X(X≥1)번째인 코드로 정의되고, 제 K군에 속하는 유니버설 코드는 (K+1)비트길이를 가지고,
Figure 112016053144187-pat00001
인 것을 특징으로 한다.
본 발명에서, 상기 순번 M인 유니버설 코드는 최하위비트 "1"에 이어서 상위비트 방향으로 K-(X-1) 개의 연속된 "0", 및 또 상위비트 방향으로 이어서 (X-1)개의 연속된 "1"을 포함하여 이루어진 이진수인 것을 특징으로 한다.
본 발명에서, 상기 바이너리 코드의 비트길이는 M+(S-1) 인 것을 특징으로 한다.
본 발명에서, 상기 순번 M인 유니버설 코드와 조합되는 상기 바이너리 코드는 오름차순 또는 내림차순으로 순차적으로 조합되는 것을 특징으로 한다.
본 발명에서, 상기 원본 데이터는 임의의 정수 Z이고,
Figure 112016053144187-pat00002
일 때,
상기 순번 M은 k가 정수일 때에는 M=k이고, k가 정수가 아닐 경우에는
Figure 112016053144187-pat00003
(f(x)는 x의 소수점 이하를 버리는 함수임(x≥0))로 계산되거나,
또는 M은
Figure 112016053144187-pat00004
로부터 계산되는 것을 특징으로 한다.
본 발명에서, 상기 바이너리 코드는
Figure 112016053144187-pat00005
인 것을 특징으로 한다.
본 발명에서, 상기 조합 유니버설 코드를 생성하는 단계에서, 상기 조합 유니버설 코드는, [유니버설 코드][바이너리 코드]의 형태로 조합되어 형성되는 것을 특징으로 한다.
본 발명에서,상기 조합 유니버설 코드를 생성하는 단계에서, 상기 부호화부는 상기 유니버설 코드가 하위부로부터 상위부로 비트 역순으로 재정렬된 유니버설 코드, 및 상기 바이너리 코드를 조합하여 상기 조합 유니버설 코드를 생성하되, 상기 조합 유니버설 코드는, [바이너리 코드][비트 역순으로 재정렬된 유니버설 코드]의 형태로 조합되어 형성되는 것을 특징으로 한다.
본 발명의 다른 측면에 따르면, 본 발명은 데이터 부호화방법에 의해 생성된 조합 유니버설 코드를 복호화하는 방법으로서, 복호화부가 조합 유니버설 코드를 입력받는 입력단계; 상기 복호화부가 상기 조합 유니버설 코드를 유니버설 코드와 바이너리 코드로 분할하는 단계; 및 상기 복호화부가 상기 유니버설 코드와 바이너리 코드로부터 원본 데이터를 생성하는 단계를 포함하여 구성되는 것을 특징으로 하는 데이터 복호화방법을 제공한다.
본 발명의 또 다른 측면에 따르면, 본 발명은 원본 데이터에 대응하는 유니버설 코드 및 바이너리 코드를 생성하고, 상기 유니버설 코드와 상기 바이너리 코드를 조합하여 조합 유니버설 코드를 생성하는 부호화부; 및 미리 설정된 외부변수 S를 저장하는 제 1메모리부를 포함하되, 상기 유니버설 코드는 해당 유니버설 코드의 최하위비트의 "01", n개 이상(n≥0)의 연속된 "1", 및 상기 최하위비트의 "01"과 상기 n개 이상(n≥0)의 연속된 "1" 사이에 배치된 적어도 p개 이상(p≥0)의 "0"을 포함하여 구성되고, 상기 바이너리 코드는, 상기 유니버설 코드를 비트길이가 증가하는 순으로 정렬하되 비트길이가 같은 경우에는 그 값이 증가하는 순으로 정렬했을 때 정해지는 순번 M과, 상기 외부변수 S에 근거하여 얻어지는 값을 그 비트길이로 갖는 이진수인 것을 특징으로 하는 데이터 부호화장치를 제공한다.
본 발명에서, 상기 순번 M인 유니버설 코드는, 제 K군(K≥1)에 속하되 오름차순으로 X(X≥1)번째인 코드로 정의되고, 제 K군에 속하는 유니버설 코드는 (K+1)비트길이를 가지고,
Figure 112016053144187-pat00006
인 것을 특징으로 한다.
본 발명에서, 상기 순번 M인 유니버설 코드는 최하위비트 "1"에 이어서 상위비트 방향으로 K-(X-1) 개의 연속된 "0", 및 또 상위비트 방향으로 이어서 (X-1)개의 연속된 "1"을 포함하여 이루어진 이진수인 것을 특징으로 한다.
본 발명에서, 상기 바이너리 코드의 비트길이는 M+(S-1) 인 것을 특징으로 한다.
본 발명에서, 상기 순번 M인 유니버설 코드와 조합되는 상기 바이너리 코드는 오름차순 또는 내림차순으로 순차적으로 조합되는 것을 특징으로 한다.
본 발명에서, 상기 원본 데이터는 임의의 정수 Z이고,
Figure 112016053144187-pat00007
일 때,
상기 순번 M은 k가 정수일 때에는 M=k이고, k가 정수가 아닐 경우에는
Figure 112016053144187-pat00008
(f(x)는 x의 소수점 이하를 버리는 함수임(x≥0))로 계산되거나,
또는 M은
Figure 112016053144187-pat00009
로부터 계산되는 것을 특징으로 한다.
본 발명에서, 상기 바이너리 코드는
Figure 112016053144187-pat00010
인 것을 특징으로 한다.
본 발명에서, 상기 조합 유니버설 코드는, [유니버설 코드][바이너리 코드]의 형태로 조합되어 형성되는 것을 특징으로 한다.
본 발명에서, 상기 조합 유니버설 코드의 생성시, 상기 부호화부는 상기 유니버설 코드가 하위부로부터 상위부로 비트 역순으로 재정렬된 유니버설 코드, 및 상기 바이너리 코드를 조합하여 상기 조합 유니버설 코드를 생성하되, 상기 조합 유니버설 코드는, [바이너리 코드][비트 역순으로 재정렬된 유니버설 코드]의 형태로 조합되어 형성되는 것을 특징으로 한다.
본 발명의 또 다른 측면에 따르면, 본 발명은 데이터 부호화장치에 의해 생성된 조합 유니버설 코드를 복호화하는 장치로서, 외부변수 S'를 저장하는 제 2메모리부; 및 조합 유니버설 코드를 유니버설 코드와 바이너리 코드로 분할하고, 상기 외부변수 S'를 이용하여 상기 유니버설 코드와 바이너리 코드로부터 원본 데이터를 생성하는 복호화부를 포함하되, 상기 외부변수 S'는 상기 제 1메모리부에 저장된 외부변수 S와 동일한 것을 특징으로 하는 데이터 복호화장치를 제공한다.
본 발명의 일측면에 따른 부호화장치 및 복호화장치는 미리 설정된 규칙에 따라 얻어지는 유니버설 코드와 바이너리 코드를 통하여 원본 데이터를 부호화 및 복호화함으로써 보다 안전하고 신뢰성 있고 보완성이 강화된 사용자 인증이 가능하도록 하고, 비교적 간단한 연산을 통해서도 부호화의 효율이나 보안성을 높일 수 있다.
도 1은 본 발명에 의한 일실시예에 따른 부호화장치 및 복호화장치의 구성을 도시한 것이다.
도 2는 본 발명에 의한 일 실시예에 따른 부호화방법을 설명하기 위한 흐름도이다.
도 3은 본 발명에 의한 일 실시예에 따른 복호화방법을 설명하기 위한 흐름도이다.
도 4는 유니버설 코드의 예를 도시한 것이다.
도 5는 H.264 표준에 사용되는 지수골룸 부호화를 도시한 것이다.
도 6은 본 실시예의 조합 유니버설 코드와 지수 골룸 코드의 성능을 비교한 도면이다.
도 7은 유니버설 코드가 하위부로부터 상위부로 비트 역순으로 재정렬된 유니버설 코드를 도시한 예를 나타낸 것이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고, 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성 요소를 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명에 의한 일실시예에 따른 부호화장치 및 복호화장치의 구성을 도시한 것이고, 도 2는 본 발명에 의한 일 실시예에 따른 부호화방법을 설명하기 위한 흐름도이고, 도 3은 본 발명에 의한 일 실시예에 따른 복호화방법을 설명하기 위한 흐름도이고, 도 4는 유니버설 코드의 예를 도시한 것이고, 도 5는 H.264 표준에 사용되는 지수골룸 부호화를 도시한 것이며, 도 6은 본 실시예의 조합 유니버설 코드와 지수 골룸 코드의 성능을 비교한 도면으로서, 이를 참조하여 본 발명에 따른 실시예를 설명하면 다음과 같다.
도 1에 도시된 바와 같이, 본 실시예에 따른 데이터 부호화장치(100)는 부호화부(110), 제 1메모리부(120) 및 출력부(130)를 포함한다.
부호화부(110)는 원본 데이터에 대응하는 유니버설 코드 및 바이너리 코드를 생성하고, 상기 유니버설 코드와 상기 바이너리 코드를 조합하여 조합 유니버설 코드를 생성한다.
제 1메모리부(120)는 미리 설정된 외부변수 S를 저장한다.
부호화부(110)에 의해 생성되는 상기 유니버설 코드는 해당 유니버설 코드의 최하위비트의 "01", n개 이상(n≥0)의 연속된 "1", 및 상기 최하위비트의 "01"과 상기 n개 이상(n≥0)의 연속된 "1" 사이에 배치된 적어도 p개 이상(p≥0)의 "0"을 포함하여 구성된다. 그리고, 상기 바이너리 코드는, 상기 유니버설 코드를 비트길이가 증가하는 순으로 정렬하되 비트길이가 같은 경우에는 그 값이 증가하는 순으로 정렬했을 때 정해지는 순번 M과, 상기 외부변수 S에 근거하여 얻어지는 값을 그 비트길이로 갖는 이진수로서, 상기 바이너리 코드의 비트길이는 M+(S-1) 이다.
상기 순번 M인 유니버설 코드는, 제 K군(K≥1)에 속하되 오름차순으로 X(X≥1)번째인 코드로 정의되고, 제 K군에 속하는 유니버설 코드는 (K+1)비트길이를 가진다. 그리고,
Figure 112016053144187-pat00011
인 것을 특징으로 한다. 여기서, 상기 순번 M인 유니버설 코드는 최하위비트 "1"에 이어서 상위비트 방향으로 K-(X-1) 개의 연속된 "0", 및 또 상위비트 방향으로 이어서 (X-1)개의 연속된 "1"을 포함하여 이루어진 이진수일 수 있다.
상기 순번 M인 유니버설 코드와 조합되는 상기 바이너리 코드는 오름차순 또는 내림차순으로 순차적으로 조합된다.
특히, 상기 원본 데이터는 임의의 정수 Z일 수 있는데, 이 경우
Figure 112016053144187-pat00012
라는 값을 계산에 의해 구할 경우,
상기 순번 M은 k가 정수일 때에는 M=k이고, k가 정수가 아닐 경우에는
Figure 112016053144187-pat00013
(단, f(x)는 x의 소수점 이하를 버리는 함수(x≥0))에 의해 구해질 수 있다.
한편, M은 다음과 같은 함수로부터 얻어질 수도 있다.
Figure 112016053144187-pat00014
M을 구하는 식을 Visual Basic for Application으로 표현하면 다음과 같다. 여기서 FIX함수는 소수점 이하를 버리는 함수이다.
------------------------------------------------------------------
If Fix(T2) = T2 Then
M = T2
Else
M = Fix(T2) + 1
End If
------------------------------------------------------------------
여기서 상기 k를 구함에 있어, 상기와 같은 식을 이용하여 k를 구하는 방법 외에도, 외부변수 S와 임의의 정수 Z를 이용하여 k를 구하여 M을 구할 수 있도록 하는 k=g(S,Z)라는 형태로 표현될 수 있는 함수라면 어떠한 함수라도 적용 가능하다.
또한, 상기 바이너리 코드는 그 비트길이가 M+(S-1)로 정해질 수 있고 다음과 같이 계산된다.
Figure 112016053144187-pat00015
인 것을 특징으로 한다. 이 때에도 상기 바이너릴 코드를 구함에 있어, 상기와 같은 식을 이용하는 방법 외에, Z, S, M을 이용하여 바이너리 코드를 구할 수 있는 바이너리 코드(Bcode)=h(Z,S,Z)라는 형태로 표현될 수 있는 함수라면 어떠한 함수라도 적용 가능하다.
이와 같이 구성된 본 실시예의 동작 및 작용을 도 1 내지 도 5를 참조하여 구체적으로 설명한다.
먼저, 부호화부(110)는 입력부(미도시)를 통해 원본 데이터를 입력받는다(S201).
이어서, 부호화부(110)는 상기 원본 데이터에 대응하는 유니버설 코드 및 바이너리 코드를 생성한다(S202). 여기서, 원본 데이터는 임의의 정수일 수 있다. 또한, 실시예에 따라서는 상기 원본 데이터는 오름차순의 임의의 양의 정수 각각에 대응하도록 미리 설정되어 있는 값(이진수, 기타 다른 체계나 형태의 값 등)일 수도 있다.
상기 유니버설 코드와 바이너리 코드는 원본 데이터를 부호화하기 위한 코드로서, 각각에 대하여 설명하면 다음과 같다.
순번
(M)
유니버설코드 바이너리코드의
비트길이
M+(S-1)

(S=1일때)
생성가능한 바이너리코드의 종류 조합유니버설코드
1 01 1 0 , 1 011 , 010
2 001 2 00, 01, 10, 11 00100, 00101,
00110, 00111
3 101 3 000, 001, 010, 011,
100, 101, 110, 111
101000, 101001, 101010, 101011,
101100, 101101, 101110, 101111
4 0001 4 0000, 0001, 0010, 0011
0100, 0101, 0110, 0111
1000, 1001, 1010, 1011
1100, 1101, 1110, 1111
00010000, 00010001, 00010010, 00010011, 00010100, 00010101, 00010110, 00010111, 00011000, 00011001, 00011010, 00011011, 00011100, 00011101, 00011110, 00011111
5 1001 5 ...
6 1101 6 ...
7 00001 7 ...
8 10001 8 ...
9 11001 9 ...
10 11101 10 ...
11 000001 11 ...
12 100001 12 ...
13 110001 13 ...
14 111001 14 ...
15 111101 15 ...
16 0000001 16 ...
17 1000001 17 ...
18 1100001 18 ...
19 1110001 19 ...
20 1111001 20 ...
유니버설 코드는 해당 유니버설 코드의 최하위비트의 "01", n개 이상(n≥0)의 연속된 "1", 및 상기 최하위비트의 "01"과 상기 n개 이상(n≥0)의 연속된 "1" 사이에 배치된 적어도 p개 이상(p≥0)의 연속된 "0"을 포함하여 구성된다. 즉, 표 1에 표시된 바와 같이, 유니버설 코드는 01부터 시작하여 그 자릿수를 한 자리씩 증가시켜 나가되, 최하위비트 쪽에는 "01"이 무조건 있어야 하고, 상위 비트쪽에는 n개 이상(n≥0)의 연속된 "1"이 있고, 그리고 그 사이에는 적어도 p개 이상(p≥0)의 "0"이 있는 이진수이다. 이러한 유니버설 코드를 순차적으로 정렬하여 M순번째가 되는 유니버설 코드는, 유니버설 코드를 비트길이가 증가하는 순으로 정렬하되 비트길이가 같은 경우에는 그 값이 증가하는 순으로 정렬했을 때, 처음으로부터 M번째에 있는 코드가 된다. 예를 들어, 순번 10번째 유니버설 코드는, 유니버설 코드를 01, 001, 101, 0001, 1001, 1101, 00001, 10001, 11001, 11101, 000001 과 같이 나열했을 때 10번째에 있는 코드인 "11101"이 된다.
또한, 비트길이가 동일한 유니버설 코드들을 하나의 군으로 묶었을 때, M 순번(M≥1)의 유니버설 코드는 제 K군(K≥1)에 속하고 그 군에서 오름차순으로 X(X≥1)번째인 유니버설 코드에 대응하도록 정의할 수 있는데, 제 K군에 속하는 유니버설 코드는 (K+1)비트길이를 가지고, M이 수학식 1을 만족하는 코드인 것을 특징으로 한다. 여기서 K 및 X는 수학수 1 내지 5를 통하여 구해질 수 있다.
Figure 112016053144187-pat00016
여기서 수학식 1을 풀면,
Figure 112016053144187-pat00017
Figure 112016053144187-pat00018
이고, K≥1이므로
Figure 112016053144187-pat00019
와 같이 된다. 따라서 K는
Figure 112016053144187-pat00020
K는 수학식 4를 만족하는 정수 중에서 가장 큰 정수로 확정된다.
K를 구하는 과정을 순차적인 알고리즘으로 표현하면 다음과 같다.
-----------------------------------------------------------------------------
i)
Figure 112016053144187-pat00021
을 통해 K'를 계산한 뒤,
ii) K'가 정수(양의 정수)이면, K = K'-1,
K'가 정수(양의 정수)가 아니면, K = f(K')
(단, f(x)는 x의 소수점 이하를 버리는 함수임(x≥0).
또는 f(x) 는 동등한 결과를 반환하는 바닥함수(=floor(x))등으로 다양한 함수가 적용될 수 있다.)
여기서, K를 구하는 계산식은 다음과 같은 형태로 표현될 수도 있다.
Figure 112016053144187-pat00022
-----------------------------------------------------------------------------
Figure 112016053144187-pat00023
X는 상기 M과 K를 이용하여 수학식 5에 따라 얻어진다.
결과적으로, 상기 수학식 1 내지 수학식 5를 통해 M순번으로부터 K값 및 X값을 계산할 수 있고, 이에 따라 순번 M에 대응하는 유니버설 코드는 최하위비트 "01"에 이어서 상위비트 방향으로 (K-X) 개의 연속된 "0", 및 또 상위비트방향으로 이어서 (X-1)개의 연속된 "1"로 이루어진 이진수가 된다. 또는 순번 M에 대응하는 유니버설 코드는 최하위비트 "1"에 이어서 상위비트방향으로 K-(X-1) 개의 연속된 "0", 및 또 상위비트방향으로 이어서 (X-1)개의 연속된 "1"로 이루어진 이진수이다.
즉, 순번 M인 유니버설코드= (X-1)개의 연속된 "1" + K-(X-1)개의 연속된 "0" + "1"
따라서, M 순번으로 정의된 유니버설 코드가 수학식 1 내지 수학식 5를 만족한다면 이 값은 제 K군의 X번째 유니버설 코드라는 것을 알 수 있다.
이후 상기 생성된 유니버설 코드로부터 원래의 순번(M)을 계산할 때에는, 순번(M)은 아래의 수학식 6에 따라 얻어질 수 있다.
Figure 112016053144187-pat00024
단, K는 "유니버설 코드의 비트길이-1" 이고, T값은 유니버설 코드의 최상위 비트로부터 최하위 비트방향으로 연속된 "1"의 갯수임(도 4 참조).
예를 들어, 유니버설 코드가 11100001 인 경우 비트길이가 8(=7+1) 이므로 제 7군에 속하고 T값은 3이므로 해당 군에서 오름차순으로 4번째인 유니버설 코드가 된다. 따라서, M=25(=(6*7)/2+3+1)이므로 25번째 순번의 유니버설 코드라는 것을 알 수 있다.
또한, 예를 들면, M=400, 즉 400 순번으로 정의된 유니버설 코드의 경우, 상기 수학식 2와 3에 따라 계산해 보면, -27.7887 < K < 28.7886(수학식 2), K≤-28.7887 or K≥27.7886(수학식 3)이므로 K=28이 되고, 수학식 5에 따라 계산해 보면 X=22가 된다. 따라서, M=400, 즉 400 순번으로 정의된 값의 경우 제 28군에 속하고 해당 군에서 오름차순으로 22번째인 유니버설 코드가 된다.
상기와 같이 M=400, 즉 400 순번으로 정의된 값의 경우, 상술한 순차적 알고리즘을 통해 K, X를 구할 수도 있다. 즉,
i)
Figure 112016053144187-pat00025
을 통해 K'을 계산하면,
ii) f(K')=28 ≠ K' 이므로 K = f(28.79) = 28이 되고, 수학식 5에 따라 X를 구하면 X=22가 된다(단, f(x)는 x의 소수점을 버리는 함수(x ≥0 인 경우), 또는 f(x) 는 동등한 결과를 반환하는 바닥함수(=floor(x))등으로 다양한 함수가 적용될 수 있다).
따라서, 순번 M=400인 유니버설 코드는 제 28군(K=28)에 속하고 순번 오름차순으로 22번째(X=22)인 유니버설 코드라는 것을 구할 수 있다. 그리고, 순번 M인 유니버설코드= (X-1)개의 "1" + K-(X-1)개의 연속된 "0" + "1"로 이루어진 이진수이므로, 순번 M =400인 유니버설 코드는 21개의 연속된 "1"에 이어, 28-(22-1)=7 개의 연속된 "0", 그리고 마지막에 "1"로 이루어진 이진수이며, 이를 다시 말하면 순번 M =400인 유니버설 코드는 최상위비트의 21개의 연속된 "1"에 이어서 6개(=28-22)의 연속된 "0" 및 그 다음 "01"로 이루어진 이진수 코드이다.
한편, 바이너리 코드는 유니버설 코드를 상기와 같이 정렬했을 때의 순번 M과 미리 설정된 외부변수 S에 근거하여 얻어지는 값을 그 비트길이로 갖는 이진수로서, 특히 바이너리 코드의 비트길이는 M+(S-1)로 정해질 수 있다. 여기서 외부변수 S는 사용자에 의해 또는 시스템에 따라 설정되는 변수로서 부호화부(110)는 제 1메모리(120)에 저장되어 있는 외부변수 S를 이용한다. 예를 들어, 임의의 정수 Z를 부호화할 때, 상기 순번 M=3이고 S=1이라면, 바이너리 코드의 비트길이는 3(즉, 3+1-1=3)이 된다. 또한, 순번 M=5이고 S=3이라면, 바이너리 코드의 비트길이는 7(즉, 5+3-1=7)이 된다.
이렇게 하여 얻어지는 바이너리 코드를 표 1에 표시된 바와 같이 순번이 M인 유니버설 코드와 조합하면 조합 유니버설 코드가 생성된다. 이 때, 해당 유니버설 코드와 조합되는 바이너리 코드는 오름차순 또는 내림차순으로 순차적으로 조합될 수 있으며, 바람직하게는 오름차순으로 조합될 수 있다. 즉, 부호화부(110)는 유니버설 코드와 바이너리 코드(오름차순으로 정리된 바이너리 코드)를 조합하여 조합 유니버설 코드를 생성한다.
이렇게 하여 생성되는 조합 유니버설 코드는 이후 복호화단계에서 자연스럽게 유니버설 코드와 바이너리 코드로 분리될 수 있다. 즉, 유니버설 코드는 무조건 "01"로 끝나므로, 해당 조합 유니버설 코드의 최상위비트로부터 시작하여 처음으로 나타나는 "01"의 뒤에서 분할을 하면 유니버설 코드와 바이너리 코드로 분할되는 것이다.
표 1을 참조하여 예를 들어 설명하면, 유니버설 코드의 순번 M이 4이고 외부변수 S가 1이라면, 유니버설 코드는 "0001"이 되고 바이너리 코드의 비트길이는 4(=4+1-1)이므로, 가능한 바이너리 코드로는 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111 이 있게 된다.
그리고, 부호화부(110)는 이렇게 하여 얻어지는 유니버설 코드와 바이너리 코드(예를 들어 오름차순으로 정렬된 바이너리 코드)를 조합하여 다음과 같은 조합 유니버설 코드를 생성한다. 아래에서 "/"는 조합 유니버설 코드로부터 유니버설 코드와 바이너리 코드가 분할되는 것을 개념적으로 나타내기 위하여 표시한 것으로서 실제로 "/"라는 기호는 포함되어 있지 않다.
0001/0000, 0001/0001, 0001/0010, 0001/0011, 0001/0100, 0001/0101, 0001/0110, 0001/0111, 0001/1000, 0001/1001, 0001/1010, 0001/1011, 0001/1100, 0001/1101, 0001/1110, 0001/1111
이하에서는 원본 데이터가 임의의 양의 정수 Z일 때 조합 유니버설 코드를 생성하는 방법에 대해 설명한다.
임의의 정수 Z에 대응하는 조합 유니버설 코드를 생성하기 위한 유니버설 코드의 순번 M은 다음과 같은 과정을 거쳐 구해진다. 여기서 S는 외부변수이다.
Figure 112016053144187-pat00026
여기서 상기 k를 구함에 있어, 상기와 같은 식을 이용하여 k를 구하는 방법 외에도, 외부변수 S와 임의의 정수 Z를 이용하여 k를 구할 수 있는 k=g(S,Z)라는 형태로 표현될 수 있는 함수라면 어떠한 함수라도 적용 가능하다.
먼저 수학식 7을 통하여 k라는 값이 구해진다. k는 순번 M을 구하기 위한 값으로서, S가 주어져 있을 때 순번 M인 유니버설 코드와 조합될 수 있는 바이너리 코드는 M+(S-1) 비트로 구성되고 그 갯수는
Figure 112016053144187-pat00027
라는 성질을 이용하여 산출된 것이다.
여기서 M 값은, k가 정수이면 M=k 이고, k가 정수가 아니면 M=f(k)+1 이 된다(f(x)는 x의 소수점 이하를 버리는 함수임(x≥0)).
이렇게 하여 유니버설 코드의 순번인 M 값이 구해지면, 상기 수학식 1 내지 5를 통해, 또는 상술한 순차적 알고리즘을 통해 이 순번 M인 유니버설 코드가 제 몇군(K군)에서 몇번째(X번째) 유니버설 코드인지 확인할 수 있다. 즉, 다음과 같이 제 몇군(K군)의 몇번째(X번째) 유니버설 코드인지를 확인할 수 있다.
----------------------------------------------------------------------------
i)
Figure 112016053144187-pat00028
을 통해 K'를 계산한 뒤,
ii) K'가 정수(양의 정수)이면, K = K'-1,
K'가 정수(양의 정수)가 아니면, K = f(K')
(단, f(x)는 x의 소수점 이하를 버리는 함수임(x≥0).
또는 f(x) 는 동등한 결과를 반환하는 바닥함수(=floor(x))등으로 다양한 함수가 적용될 수 있다.)
Figure 112016053144187-pat00029
-----------------------------------------------------------------------------
상기에서 K를 구하는 계산식은 다음과 같은 형태로 표현될 수도 있다.
Figure 112016053144187-pat00030
이에 따라, 순번 M인 유니버설 코드는
유니버설코드= (X-1)개의 연속된 "1" + K-(X-1)개의 연속된 "0" + "1"
이라는 값을 구할 수 있다.
상기와 같이 임의의 정수 Z에 대하여 유니버설 코드가 구해지면, "S+(M-1)"의 비트길이를 갖는 바이너리 코드는 수학식 8에 의해 구해진다.
Figure 112016053144187-pat00031
이 때에도 상기 바이너리 코드를 구함에 있어, 상기와 같은 식을 이용하는 방법 외에, Z, S, M을 이용하여 바이너리 코드를 구할 수 있는 바이너리 코드(Bcode)=h(Z,S,Z)라는 형태로 표현될 수 있는 함수라면 어떠한 함수라도 적용 가능하다.
이러한 과정을 거쳐서 부호화부(110)는 임의의 정수 Z에 대하여 유니버설 코드와 바이너리 코드를 생성한다.
예를 들면, S=2 로 주어질 때, 임의의 순번 Z=1000000 에 대한 조합 유니버설 코드는 아래와 같이 계산된다.
[1] 수학식 7을 통하여 M을 구하면,
Figure 112016053144187-pat00032
이 된다. 여기서 k는 정수가 아니므로, M=f(k)=f(17.93157)+1 = 17+1 = 18이 된다.
Figure 112016053144187-pat00033
[2] M = 18일 때 K, X를 구하면
Figure 112016053144187-pat00034
이므로, K = f(K')=f(6.520797)= 6 이다.
또는
Figure 112016053144187-pat00035
로 구할 수도 있다.
Figure 112016053144187-pat00036
X=3이 된다.
따라서, Z=1000000에 대응하는 유니버설 코드는
유니버설코드=(X-1)개의 연속된 "1" + K-(X-1)개의 연속된 "0"+"1"=1100001
이 된다.
[3] 수학식 8을 이용하여 바이너리 코드를 구하면,
Figure 112016053144187-pat00037
상기 결과의 이진수 1110100001001000011 는 19비트이므로, 별도의 leading-zero를 덧붙일 필요없이 이 자체가 바이너리 코드가 된다. 만약 상기 과정을 거쳐서 얻어지는 바이너리 코드의 값이 19비트길이가 되지 않는다면, 그 길이를 맞추기 위해서 상기 구해진 이진수 바이너리 코드 앞에 0을 붙여서 19비트길이의 이진수를 만들면 된다.
다음으로, 부호화부(110)는 상기 유니버설 코드와 상기 바이너리 코드를 조합하여 조합 유니버설 코드를 생성한다(S203). 즉, [유니버설 코드][바이너리 코드]의 조합에 의해 조합 유니버설 코드를 생성한다.
예를 들어 상술한 예에서와 같이 임의의 정수 Z=1000000(십진수)인 경우, 조합유니버설 코드는,
[유니버설코드][바이너리코드] = [1100001][1110100001001000011]
으로 구성되며, 최종적인 값은
11000011110100001001000011 의 26비트의 조합 유니버설 코드(BL-code)가 된다.
추가적으로, 이와 같은 조합 유니버설 코드에 대하여 다양한 변형이 가능한데, 예를 들어 [유니버설 코드]를 하위부로부터 상위 비트방향으로 비트 역순으로 재정렬하여, 아래와 같은 형태로 변형할 수 있다.
[유니버설코드][바이너리코드] ==> [바이너리코드][비트 역순 재정렬 유니버설코드]
상기에서 역순 재조합 방법의 일 예를 들면 아래 그림과 같다. 도 7에 도시된 바와 같이 유니버설 코드의 최하위 비트를 그 최상위로, 그 다음 하위비트를 상기 최상위비트의 다음비트로 이동하는 등의 과정을 유니버설 코드의 마지막 비트까지 반복한다.
즉, 도 7에 도시된 바와 같이, 원래 조합 유니버설 코드가
[유니버설코드][바이너리코드] = [1100001][1110100001001000011] 이라면,
유니버설 코드를 하위부로부터 상위부로 비트 역순으로 재정렬하면, [1100001] ==> [1000011] 로 변경되고, 다음과 같이 역순으로 조합된다.
[1110100001001000011][1000011]
이렇게 하여 변형 형성되는 조합 유니버설코드를 복호화할 때에는, 최하위비트로부터 최상위 비트로 이동하면서 “10”을 처음만날 때, “10”앞에서 유니버설 코드를 분리할수 있으므로, 비트 역순 재정렬 유니버설코드 “1000011” 이 분리되고, 이를 다시 역순으로 정렬하여 “1100001”를 얻어서 M을 구할 수 있다. 또는 상기 비트 역순 재정렬 유니버설코드 “1000011” 의 경우 X는 최하위 비트로부터 2비트가 “1”로 구성되므로, T=2 이고, 유니버설 코드의 길이는 7로서 K=7-1=6 이므로, 이 정보로부터 직접 M을 구할 수도 있다. 따라서 수학식 6을 이용하여, M = (6*5)/2 + 2+1 = 18을 구할 수 있다. 그리고 상기에서 S=2 였으므로, 바이너리 코드의 비트길이는 M+(S-1)=18+1 = 19비트를 상기 “10”앞에서 읽어오면, 바이너리 코드 [1110100001001000011] 가 완벽하게 읽혀진다.
마지막으로, 데이터 부호화 장치(100)는 출력부(130)를 통해 상기 생성된 조합 유니버설 코드를 출력한다(S204).
-----------------------------------------------------------------------------
한편, 도 3을 참조하면, 상기와 같은 과정을 통해 조합 유니버설 코드가 출력(전송)되면, 복호화부(220)는 입력부(210)를 통해 조합 유니버설 코드를 입력받는다(S301).
이어서, 복호화부(220)는 상기 조합 유니버설 코드를 분할하여 유니버설 코드와 바이너리 코드를 추출한다(S302). 상술한 바와 같이 조합 유니버설 코드의 최상위비트로부터 이동하면서 처음 나타나는 "01" 뒤에서 코드를 분할함으로써 유니버설 코드와 바이너리 코드를 얻어낼 수 있다.
다음으로, 복호화부(220)는 유니버설 코드와 바이너리 코드를 복호화하여 원본 데이터를 생성한다(S303). 데이터 부호화장치(100)에서 제 1메모리부(120)에 저장된 외부변수 S를 이용하여 부호화가 이루어진 경우, 복호화부(220)는 제 2 메모리부(230)에 저장되어 있는 외부변수 S'를 참조하여, 상기 조합 유니버설 코드로부터 원본 데이터를 복호화한다. 여기서 외부변수 S'는 외부변수 S와 동일한 값이다.
복호화과정을 예를 들어 설명하면 다음과 같다.
조합 유니버설 코드가 "11000011110100001001000011"로 입력되고 외부변수 S=2인 경우를 예로 든다.
[1] 먼저, 조합 유니버설 코드를 분할하여
유니버설 코드 = 1100001
바이너리 코드 = 1110100001001000011
를 얻는다.
[2] 다음으로, 유니버설 코드 1100001 로부터 순번 M을 구하면
Figure 112016053144187-pat00038
[3] 다음으로, 바이너리 코드는 S+(M-1) 비트길이가 이어지므로, 2+(18-1) = 19비트가 된다. 따라서, 1110100001001000011 이 된다. 이 이진수를 10진수의 값을 계산하면 475715 이 된다.
[4] 다음으로 수학식 8 에 따라 원본 데이터 Z를 구하면,
Figure 112016053144187-pat00039
이므로,
Figure 112016053144187-pat00040
이렇게 하여 원본 데이터 Z=1000000 (십진수)가 복원된다.
참고로 H.264 표준에 사용되는 지수골룸 부호화는 도 5와 같은데 k=0일때 x순번(도 5에서는 x=0이 1번순번이다)에 대응하는 지수골룸코드 1, 010, 011, 00100, 00101, 00110, .... 과 본 실시예의 조합유니버설 코드(S=1일 때) 와의 성능비교를 수행하면, 도 6과 같이 순번이 증가함에 따라 보다 더 작은 비트수의 코드로도 전송이 가능함을 알 수 있다. 세로축은 코드가 차지하는 비트수이다. X축은 순번의 증가를 나타낸다.
본 발명의 실시예에서 제안하는 조합 유니버설 코드를 활용하면, Z=1000000 일 때 , S= 1이면 조합유니버설 코드는 11100011110100001001000001 로서 26비트인데, 1000000 에 대응되는 다른 코드들을 비교하여보면 도 6과 같이 더욱 우수한 성능을 나타냄을 알 수 있다.
이상 살펴 본 바와 같이, 본 실시예에 따른 부호화장치 및 복호화장치는 미리 설정된 규칙에 따라 얻어지는 유니버설 코드와 바이너리 코드를 이용하여 원본 데이터를 부호화 및 복호화함으로써 보다 안전하고 신뢰성 있고 보완성이 강화된 사용자 인증이 가능하고, 비교적 간단한 연산을 통해서도 부호화의 효율이나 보안성을 높일 수 있다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고, 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
100 : 데이터 부호화장치
110 : 부호화부
120 : 제 1메모리부
130 : 출력부
200 : 데이터 복호화장치
210 : 입력부
220 : 복호화부
230 : 제 2메모리부

Claims (20)

  1. 부호화부가 원본 데이터를 입력받는 입력단계;
    상기 부호화부가 상기 원본 데이터에 대응하는 유니버설 코드 및 바이너리 코드를 생성하는 단계; 및
    상기 부호화부가 상기 유니버설 코드와 상기 바이너리 코드를 조합하여 조합 유니버설 코드를 생성하는 단계를 포함하되,
    상기 유니버설 코드는 해당 유니버설 코드의 최하위비트의 "01", n개 이상(n≥0)의 연속된 "1", 및 상기 최하위비트의 "01"과 상기 n개 이상(n≥0)의 연속된 "1" 사이에 배치된 적어도 p개 이상(p≥0)의 "0"을 포함하여 구성되고,
    상기 바이너리 코드는, 상기 유니버설 코드를 비트길이가 증가하는 순으로 정렬하되 비트길이가 같은 경우에는 그 값이 증가하는 순으로 정렬했을 때 정해지는 순번 M과, 미리 설정된 외부변수 S에 근거하여 얻어지는 값을 그 비트길이로 갖는 이진수인 것을 특징으로 하는 데이터 부호화방법.
  2. 제 1항에 있어서,
    상기 순번 M인 유니버설 코드는, 제 K군(K≥1)에 속하되 오름차순으로 X(X≥1)번째인 코드로 정의되고,
    제 K군에 속하는 유니버설 코드는 (K+1)비트길이를 가지고,
    Figure 112016053144187-pat00041

    인 것을 특징으로 하는 데이터 부호화방법.
  3. 제 2항에 있어서,
    상기 순번 M인 유니버설 코드는 최하위비트 "1"에 이어서 상위비트 방향으로 K-(X-1) 개의 연속된 "0", 및 또 상위비트 방향으로 이어서 (X-1)개의 연속된 "1"을 포함하여 이루어진 이진수인 것을 특징으로 하는 데이터 부호화방법.
  4. 제 1항에 있어서,
    상기 바이너리 코드의 비트길이는 M+(S-1) 인 것을 특징으로 하는 데이터 부호화 방법.
  5. 제 4항에 있어서,
    상기 순번 M인 유니버설 코드와 조합되는 상기 바이너리 코드는 오름차순 또는 내림차순으로 순차적으로 조합되는 것을 특징으로 하는 데이터 부호화 방법.
  6. 제 4항에 있어서,
    상기 원본 데이터는 임의의 정수 Z이고,
    Figure 112016053144187-pat00042

    일 때,
    상기 순번 M은 k가 정수일 때에는 M=k이고, k가 정수가 아닐 경우에는
    Figure 112016053144187-pat00043
    (f(x)는 x의 소수점 이하를 버리는 함수임(x≥0))로 계산되거나,
    또는 M은
    Figure 112016053144187-pat00044
    로부터 계산되는 것을 특징으로 하는 데이터 부호화 방법.
  7. 제 6항에 있어서,
    상기 바이너리 코드는
    Figure 112016053144187-pat00045

    인 것을 특징으로 하는 데이터 부호화 방법.
  8. 제 1항에 있어서,
    상기 조합 유니버설 코드를 생성하는 단계에서,
    상기 조합 유니버설 코드는,
    [유니버설 코드][바이너리 코드]의 형태로 조합되어 형성되는 것을 특징으로 하는 데이터 부호화방법.
  9. 제 1항에 있어서,
    상기 조합 유니버설 코드를 생성하는 단계에서,
    상기 부호화부는 상기 유니버설 코드가 하위부로부터 상위부로 비트 역순으로 재정렬된 유니버설 코드, 및 상기 바이너리 코드를 조합하여 상기 조합 유니버설 코드를 생성하되,
    상기 조합 유니버설 코드는, [바이너리 코드][비트 역순으로 재정렬된 유니버설 코드]의 형태로 조합되어 형성되는 것을 특징으로 하는 데이터 부호화방법.
  10. 제 1항 내지 제 9항 중 어느 한 항에 기재된 데이터 부호화방법에 의해 생성된 조합 유니버설 코드를 복호화하는 방법으로서,
    복호화부가 조합 유니버설 코드를 입력받는 입력단계;
    상기 복호화부가 상기 조합 유니버설 코드를 유니버설 코드와 바이너리 코드로 분할하는 단계; 및
    상기 복호화부가 상기 유니버설 코드와 바이너리 코드로부터 원본 데이터를 생성하는 단계를 포함하여 구성되는 것을 특징으로 하는 데이터 복호화방법.
  11. 원본 데이터에 대응하는 유니버설 코드 및 바이너리 코드를 생성하고, 상기 유니버설 코드와 상기 바이너리 코드를 조합하여 조합 유니버설 코드를 생성하는 부호화부; 및
    미리 설정된 외부변수 S를 저장하는 제 1메모리부를 포함하되,
    상기 유니버설 코드는 해당 유니버설 코드의 최하위비트의 "01", n개 이상(n≥0)의 연속된 "1", 및 상기 최하위비트의 "01"과 상기 n개 이상(n≥0)의 연속된 "1" 사이에 배치된 적어도 p개 이상(p≥0)의 "0"을 포함하여 구성되고,
    상기 바이너리 코드는, 상기 유니버설 코드를 비트길이가 증가하는 순으로 정렬하되 비트길이가 같은 경우에는 그 값이 증가하는 순으로 정렬했을 때 정해지는 순번 M과, 상기 외부변수 S에 근거하여 얻어지는 값을 그 비트길이로 갖는 이진수인 것을 특징으로 하는 데이터 부호화장치.
  12. 제 11항에 있어서,
    상기 순번 M인 유니버설 코드는, 제 K군(K≥1)에 속하되 오름차순으로 X(X≥1)번째인 코드로 정의되고,
    제 K군에 속하는 유니버설 코드는 (K+1)비트길이를 가지고,
    Figure 112016053144187-pat00046

    인 것을 특징으로 하는 데이터 부호화장치.
  13. 제 12항에 있어서,
    상기 순번 M인 유니버설 코드는 최하위비트 "1"에 이어서 상위비트 방향으로 K-(X-1) 개의 연속된 "0", 및 또 상위비트 방향으로 이어서 (X-1)개의 연속된 "1"을 포함하여 이루어진 이진수인 것을 특징으로 하는 데이터 부호화장치.
  14. 제 11항에 있어서,
    상기 바이너리 코드의 비트길이는 M+(S-1) 인 것을 특징으로 하는 데이터 부호화 장치.
  15. 제 14항에 있어서,
    상기 순번 M인 유니버설 코드와 조합되는 상기 바이너리 코드는 오름차순 또는 내림차순으로 순차적으로 조합되는 것을 특징으로 하는 데이터 부호화 장치.
  16. 제 14항에 있어서,
    상기 원본 데이터는 임의의 정수 Z이고,
    Figure 112016053144187-pat00047

    일 때,
    상기 순번 M은 k가 정수일 때에는 M=k이고, k가 정수가 아닐 경우에는
    Figure 112016053144187-pat00048
    (f(x)는 x의 소수점 이하를 버리는 함수임(x≥0))로 계산되거나,
    또는 M은
    Figure 112016053144187-pat00049
    로부터 계산되는 것을 특징으로 하는 데이터 부호화 장치.
  17. 제 16항에 있어서,
    상기 바이너리 코드는
    Figure 112016053144187-pat00050

    인 것을 특징으로 하는 데이터 부호화 장치.
  18. 제 11항에 있어서,
    상기 조합 유니버설 코드는,
    [유니버설 코드][바이너리 코드]의 형태로 조합되어 형성되는 것을 특징으로 하는 데이터 부호화 장치.
  19. 제 11항에 있어서,
    상기 조합 유니버설 코드의 생성시,
    상기 부호화부는 상기 유니버설 코드가 하위부로부터 상위부로 비트 역순으로 재정렬된 유니버설 코드, 및 상기 바이너리 코드를 조합하여 상기 조합 유니버설 코드를 생성하되,
    상기 조합 유니버설 코드는, [바이너리 코드][비트 역순으로 재정렬된 유니버설 코드]의 형태로 조합되어 형성되는 것을 특징으로 하는 데이터 부호화 장치.
  20. 제 11항 내지 제 19항 중 어느 한 항에 기재된 데이터 부호화장치에 의해 생성된 조합 유니버설 코드를 복호화하는 장치로서,
    외부변수 S'를 저장하는 제 2메모리부; 및
    조합 유니버설 코드를 유니버설 코드와 바이너리 코드로 분할하고, 상기 외부변수 S'를 이용하여 상기 유니버설 코드와 바이너리 코드로부터 원본 데이터를 생성하는 복호화부를 포함하되,
    상기 외부변수 S'는 상기 제 1메모리부에 저장된 외부변수 S와 동일한 것을 특징으로 하는 데이터 복호화장치.
KR1020160068431A 2016-06-01 2016-06-01 데이터 부호화 및 복호화 방법과 장치 KR101734515B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160068431A KR101734515B1 (ko) 2016-06-01 2016-06-01 데이터 부호화 및 복호화 방법과 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160068431A KR101734515B1 (ko) 2016-06-01 2016-06-01 데이터 부호화 및 복호화 방법과 장치

Publications (1)

Publication Number Publication Date
KR101734515B1 true KR101734515B1 (ko) 2017-05-11

Family

ID=58742020

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160068431A KR101734515B1 (ko) 2016-06-01 2016-06-01 데이터 부호화 및 복호화 방법과 장치

Country Status (1)

Country Link
KR (1) KR101734515B1 (ko)

Similar Documents

Publication Publication Date Title
US9998144B2 (en) Generating a code alphabet of symbols to generate codewords for words used with a program
CN110291793B (zh) 上下文自适应二进制算术编解码中范围推导的方法和装置
WO2007123257A1 (en) Method and apparatus for entropy coding and decoding
Becher et al. Normal numbers and finite automata
KR102118328B1 (ko) 2의 멱이 아닌 길이로 확장된 폴라 코드의 코딩 및 디코딩
JP3274284B2 (ja) 符号化装置およびその方法
Hiller et al. Increasing the efficiency of syndrome coding for PUFs with helper data compression
RU2709656C2 (ru) Кодер, декодер и способ, использующие модовые символы
Yang et al. Universal lossless data compression with side information by using a conditional MPM grammar transform
KR101734515B1 (ko) 데이터 부호화 및 복호화 방법과 장치
Ryabko et al. “Book stack” as a new statistical test for random numbers
US6101281A (en) Method for improving data encoding and decoding efficiency
KR101760070B1 (ko) 데이터 부호화 및 복호화 방법과 장치
Raja et al. A new variable-length integer code for integer representation and its application to text compression
Setia et al. Enhanced LZW algorithm with less compression ratio
Al-Rababa'a et al. Using bit recycling to reduce the redundancy in plurally parsable dictionaries
KR101652735B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
Ri et al. A Novel Representation for Permutations
TWI538414B (zh) 用於多模式bch碼編碼的方法及使用該方法的編碼器
US11184023B1 (en) Hardware friendly data compression
JPH0629861A (ja) データ圧縮方法
𝐒𝐡𝐢𝐫𝐚𝐤𝐨𝐥𝟏 et al. Performance optimization of dual stage algorithm for lossless data compression and decompression
Anisimov et al. Variable length prefix (Δ, k)-codes
Hong et al. Variable-lenth code based on an order complexity
KR101578608B1 (ko) 일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치

Legal Events

Date Code Title Description
GRNT Written decision to grant