KR20180000143A - 2진 유니버설 코드의 N진 유니버설 코드로의 encoding 및 decoding방법 - Google Patents
2진 유니버설 코드의 N진 유니버설 코드로의 encoding 및 decoding방법 Download PDFInfo
- Publication number
- KR20180000143A KR20180000143A KR1020160077931A KR20160077931A KR20180000143A KR 20180000143 A KR20180000143 A KR 20180000143A KR 1020160077931 A KR1020160077931 A KR 1020160077931A KR 20160077931 A KR20160077931 A KR 20160077931A KR 20180000143 A KR20180000143 A KR 20180000143A
- Authority
- KR
- South Korea
- Prior art keywords
- universal code
- symbol
- data
- code
- binary
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M5/00—Conversion of the form of the representation of individual digits
- H03M5/02—Conversion to or from representation by pulses
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/55—Compression 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
임의의 순번(K>=1) 에 대하여, 4진 유니버설 코드를 생성하여 4자리씩 끊어서 8비트단위로 압축데이터를 생성하는 방법에 관한 발명으로서,
4진의 경우 최상위 자리가 "1" 또는 “2” 또는 “3”으로 구성되고, 그 이하자리가 “0” 으로 구성되는 4진 유니버설 코드이다.
예를들어, 2 / 3 / 200 / 300 / 200/ 2000 과 같이 구성된 4진유니버설 코드의 경우, “1" 또는 2”또는 “3”을 만날 때 마다 데이터를 분할하여 읽으면 유일복호성을 만족시키는 유니버설코드로 완벽히 분할히 된다.
N=4 일때, 상기식에 따른 K 및 M값의 예시는 아래표와 같다.
2) 다음으로, N진 유니버설 코드의 suffix를 구하는 방법은
M-2 개의 "0" 으로 자동적으로 산출된다.
3) N진 유니버설 코드의 prefix 는,
K 를 (N-1) 로 나눈 나머지값( K mod (N-1), 이때 x mod y 는 x를 y로 나눈 나머지를 반환하는 함수) 이 prefix가 되는데 이때, prefix가 0 이면, prefix = N-1로 한다.
4진의 경우 최상위 자리가 "1" 또는 “2” 또는 “3”으로 구성되고, 그 이하자리가 “0” 으로 구성되는 4진 유니버설 코드이다.
예를들어, 2 / 3 / 200 / 300 / 200/ 2000 과 같이 구성된 4진유니버설 코드의 경우, “1" 또는 2”또는 “3”을 만날 때 마다 데이터를 분할하여 읽으면 유일복호성을 만족시키는 유니버설코드로 완벽히 분할히 된다.
N=4 일때, 상기식에 따른 K 및 M값의 예시는 아래표와 같다.
2) 다음으로, N진 유니버설 코드의 suffix를 구하는 방법은
M-2 개의 "0" 으로 자동적으로 산출된다.
3) N진 유니버설 코드의 prefix 는,
K 를 (N-1) 로 나눈 나머지값( K mod (N-1), 이때 x mod y 는 x를 y로 나눈 나머지를 반환하는 함수) 이 prefix가 되는데 이때, prefix가 0 이면, prefix = N-1로 한다.
Description
라인코딩,유니버설코드
라인코딩,유니버설코드
발명을 실시하기 위한 구체적인 내용에 상술
발명을 실시하기 위한 구체적인 내용에 상술
발명을 실시하기 위한 구체적인 내용에 상술
임의의 순번(K>=1) 에 대하여, N진 유니버설 코드를 생성하는 방법에 관한 발명으로서,
먼저 아래 표1와 같이, N=4인 4진2진 유니버설 코드의 경우 최상위 자리가 "1" 또는 “2” 또는 “3”으로 구성되고, 그 이하자리가 "0"으로 구성되는 유니버설 토드이다.
예를들어, 2 / 3 / 200 / 300 / 200/ 1000 / 1 / 2 / 3 / 1 과 같이 구성된 4진 유니버설 코드의 경우, "1" 또는 “2”또는 “3”을 만날 때 마다 데이터를 분할하여 읽으면 유일 복호성을 만족시키는 유니버설코드로 완벽히 분할히 된다.
2320030020010001231 ==> 2/3/200/300/200/1000/1/2/3/1
K | N4 유니버설설코코드드 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 10 |
5 | 20 |
6 | 30 |
7 | 100 |
8 | 200 |
9 | 300 |
10 | 1000 |
11 | 2000 |
12 | 3000 |
13 | 10000 |
14 | 20000 |
15 | 30000 |
16 | 100000 |
17 | 200000 |
18 | 300000 |
19 | 1000000 |
20 | 2000000 |
21 | 3000000 |
... | ... |
상기 표1과 같이 N진 유니버설 코드의 경우 K 및 N 값에 따라 K 에 대응하는 유니버설 코드를 실시간 연산을 통해 encoding/ decoding할 수 있다.
1) 임의의 순번 K 로부터 M을 구한다. N진 유니버설 코드를 만들때 아래와 같은 수식을 이용한다.
물론 이와 같은 수식과 동일한 결과를 가져오는 모든 함수는 본 발명의 권리범위에 속한다.
N=4 일때, 상기식에 따른 K 및 M값의 예시는 아래표와 같다.
K | M |
1 | 2 |
2 | 2 |
3 | 2 |
4 | 3 |
5 | 3 |
6 | 3 |
7 | 4 |
8 | 4 |
9 | 4 |
10 | 5 |
11 | 5 |
12 | 5 |
13 | 6 |
14 | 6 |
15 | 6 |
16 | 7 |
17 | 7 |
18 | 7 |
19 | 8 |
20 | 8 |
21 | 8 |
22 | 9 |
23 | 9 |
24 | 9 |
25 | 10 |
26 | 10 |
27 | 10 |
28 | 11 |
29 | 11 |
30 | 11 |
31 | 12 |
32 | 12 |
33 | 12 |
34 | 13 |
35 | 13 |
36 | 13 |
37 | 14 |
38 | 14 |
39 | 14 |
40 | 15 |
... | ... |
2) 다음으로, N진 유니버설 코드의 suffix를 구하는 방법은
M-2 개의 "0" 으로 자동적으로 산출된다.
3) N진 유니버설 코드의 prefix 는,
K 를 (N-1) 로 나눈 나머지값( K mod (N-1), 이때 x mod y 는 x를 y로 나눈 나머지를 반환하는 함수) 이 prefix가 되는데 이때, prefix가 0 이면, prefix = N-1로 한다.
이때, N에 따라 prefix는 10이상 일 수 있는데, 그때에는 1자리의 적절한 문자symbol로 prefix를 상징하여 표현할 수 있음은 물론이다. 예를들어, 10진수 10은 16진수로 A 와 같은 방법이다.
이와 같은 코드를 BL-N-beta 코드라 명명하고 상기 예시는 N=4일때를 의미하는데,
BL
-N2-beta
코드의 경우에는, 0 아닌
수를 만날때마다
분할함으로써
유일복호성
을 유지한다.
예를들어 BL-62코드(N=6)의 경우에는,
2/3/4/5000000/4/50/2000/3/300000/1/3/3 은 아래와 같이 일렬로 붙어있게 되나.
234500000045020003300000133 은 다음과 같이 유일복호성을 가지고 동일하게 분할됨을 알수있다.
2/3/4/5000000/4/50/2000/3/300000/1/3/3
이와 같은 규칙에 따라 생성된 최종 결과값을 아래표에 예시로서 나타낸다.
K | M | 4진유니버버설설코코드드 |
1 | 2 | 1 |
2 | 2 | 2 |
3 | 2 | 3 |
4 | 3 | 10 |
5 | 3 | 20 |
6 | 3 | 30 |
7 | 4 | 100 |
8 | 4 | 200 |
9 | 4 | 300 |
10 | 5 | 1000 |
11 | 5 | 2000 |
12 | 5 | 3000 |
13 | 6 | 10000 |
14 | 6 | 20000 |
15 | 6 | 30000 |
16 | 7 | 100000 |
17 | 7 | 200000 |
18 | 7 | 300000 |
19 | 8 | 1000000 |
20 | 8 | 2000000 |
21 | 8 | 3000000 |
22 | 9 | 10000000 |
23 | 9 | 20000000 |
24 | 9 | 30000000 |
25 | 10 | 100000000 |
26 | 10 | 200000000 |
27 | 10 | 300000000 |
28 | 11 | 1000000000 |
29 | 11 | 2000000000 |
30 | 11 | 3000000000 |
31 | 12 | 10000000000 |
32 | 12 | 20000000000 |
33 | 12 | 30000000000 |
... | ... | ... |
상기와 같은 유니버설 코드의
decoding방법은
,
N진 유니버설 코드의 길이를 L 이라고 하고,
"0"을 제외한 prefix 를 H 라고 한다면(또는 유니버설 코드의 최초 자리 숫자) , 아래 수식에 따라 계산하면 K 값이 구해진다.
이렇게 순번 K로부터 계산된 N유니버설 코드는,
다양한 2진 유니버설 코드와 각 순번별로 1:1로 매핑되어, 4진화된 값으로 변형된뒤 ,4자리의 4진수를 묶으면 256종이 도며 이를 8비트의 2진수에 별도의 규칙으로 매핑하거나 그대로 4자리 4진수로부터 연산을 통해 8자리의 2진수로 변환하여, 8B10B등 고속전송라인코딩으로 변환하여 접목가능하다.
예를들어, 압축전송대상인, 데이터가 0 으로 시작하는지 1로 시작하는지 송수신간에 알고 있다고 한다면, 일 실시례로서, "1"로 시작하는 이진데이터에 있어서,
1000111010110000011111001010101011101
상위에서 하위 방향으로 이동시, 비트값 변화가 있을때, 아래와 같은 형태로 분할가능하며,
1/000/111/0/1/0/11/00000/11111/00/1/0/1/0/1/0/1/0/111/0/1
각 분할된 이진수 덩어리는 바이너리 클러스터라고 하며, 길이만 알고, 시작바이너리 클러스터가 무슨 값으로 (0 인지 1인지) 구성되었는지 알면 이진수를 복원할수 있다.
상기의 경우, 바이너리 클러스터의 길이 값을 기준으로 구분하면 아래와 같다. 1/3/3/1/1/1/2/5/5/2/1/1/1/1/1/1/1/1/3/1/1 이다. 이와 같은 것을 길이 클러스터라고 정의하고,
이때 이러한 길이 값 변환결과에서 길이가 1인 경우에는, 다음 길이 클러스터의 길이가 역시 1인 경우를 편의상 B 심볼( 즉 1/1/) 이라 하고, 하나의 심볼로 간주한다. 혹은 다음 길이 클러스터 길이가 1 보다 큰 경우에는, 다음 길이 클러스터의의 값에서 1을 빼주면(해당 다음 길이 클러스터는 값이 1이 감소되게 된다), 1비트만큼을 포함하여 하나의 심볼로 간주하는데 이를 A 심볼(즉 1/1 ) 이라고 하자. A심볼과 B심볼의 차이점은, 해당심볼에 클러스터간의 구분정보가 2개인가 1개인가의 차이이다.
나머지의 경우에는, 그대로 길이 클러스터가 심볼로 정의된다고 한다면,
1/3/3/1/1/1/2/5/5/2/1/1/1/1/1/1/1/1/3/1/1
위와 같은 길이 클러스터는,
1/3/3 ==> 1/1 (A심볼) 과 2/ 심볼 및 3/ 심볼로 3개의 심볼로 구분된다.
1/1/ ==> B심볼로 된다.
1/2/5/ ==> 1/1 (A심볼), 1/1(A심볼) , 4/ 심볼 라는 3개의 심볼로 구분된다.
5/ ===> 5/ 심볼
2/ ===> 2/ 심볼
1/1/ ==> B심볼
1/1/ ==> B심볼
1/1/ ==> B심볼
1/1/ ==> B심볼
3/ ==> 3/ 심볼
1/1 ==> A심볼 또는 B심볼(데이터의 마지막이므로, 1/1/ 과 1/1 의 큰 차이는 없음).
이와 같은 규칙으로 생성 가능한 모든 심볼을 K 값에 대응하면 아래와 같다.
이를 BL-sigma 코드라고 한다. K=1 일때는 A K=2일때는 B, K가 3이상일때는 (K-1)자체가 하나의 심볼을 나타낸다. encoding, decoding은 이의 순관계 역관계로 정의된다.
K | BL-sigma |
1 | A |
2 | B |
3 | 2/ |
4 | 3/ |
5 | 4/ |
6 | 5/ |
7 | 6/ |
8 | 7/ |
9 | 8/ |
10 | 9/ |
11 | 10/ |
12 | 11/ |
13 | 12/ |
14 | 13/ |
15 | 14/ |
16 | 15/ |
17 | 16/ |
18 | 17/ |
… | … |
1로 시작하는 일례로 393,202 bit의 이진데이터의 경우에 위와 같이 분할하면, 아래표 14와 같다. 실질적으로 심볼 A 및 B는 2/ 는 2비트의 데이터를 나타낸다.
심볼 | K | 빈도도수수 |
A | 1 | 39170 |
B | 2 | 39463 |
2/ | 3 | 39260 |
3/ | 4 | 19600 |
4/ | 5 | 9912 |
5/ | 6 | 4934 |
6/ | 7 | 2434 |
7/ | 8 | 1199 |
8/ | 9 | 575 |
9/ | 10 | 302 |
10/ | 11 | 161 |
11/ | 12 | 81 |
12/ | 13 | 38 |
13/ | 14 | 17 |
14/ | 15 | 15 |
15/ | 16 | 4 |
16/ | 17 | 4 |
17/ | 18 | 3 |
18/ | 19 | 5 |
20/ | 21 | 1 |
21/ | 22 | 1 |
23/ | 24 | 1 |
27/ | 28 | 1 |
29/ | 30 | 2 |
32/ | 33 | 1 |
40/ | 41 | 1 |
49/ | 50 | 1 |
60/ | 61 | 1 |
이제 이진데이터를 상기 표와 같이 분석한뒤, K를 매개로 BL-N 코드와 매칭하면, 아래와 같고, 4진 데이터의 크기가 2진데이터의 크기보다 50%이하로 작아지면, 압해당심볼에서는 압축효과가 발생하게 된다.
K | symbol | 원본데이이터터 | frq | 4진진유유니니버버설설코코드드 | 4진진데데이이터터크크기기 | 2진진데데이이터터크크기기 |
1 | A | 2 | 43248 | 1 | 43248 | 86496 |
2 | B | 2 | 41956 | 2 | 41956 | 83912 |
3 | 2/ | 2 | 43033 | 3 | 43033 | 86066 |
4 | 3/ | 3 | 21466 | 10 | 42932 | 64398 |
5 | 4/ | 4 | 10176 | 20 | 20352 | 40704 |
6 | 5/ | 5 | 5281 | 30 | 10562 | 26405 |
7 | 6/ | 6 | 2639 | 100 | 7917 | 15834 |
8 | 7/ | 7 | 1209 | 200 | 3627 | 8463 |
9 | 8/ | 8 | 853 | 300 | 2559 | 6824 |
10 | 9/ | 9 | 518 | 1000 | 2072 | 4662 |
11 | 10/ | 10 | 451 | 2000 | 1804 | 4510 |
12 | 11/ | 11 | 254 | 3000 | 1016 | 2794 |
13 | 12/ | 12 | 340 | 10000 | 1700 | 4080 |
14 | 13/ | 13 | 231 | 20000 | 1155 | 3003 |
15 | 14/ | 14 | 230 | 30000 | 1150 | 3220 |
16 | 15/ | 15 | 121 | 100000 | 726 | 1815 |
17 | 16/ | 16 | 60 | 200000 | 360 | 960 |
18 | 17/ | 17 | 44 | 300000 | 264 | 748 |
19 | 18/ | 18 | 40 | 1000000 | 280 | 720 |
20 | 19/ | 19 | 27 | 2000000 | 189 | 513 |
21 | 20/ | 20 | 24 | 3000000 | 168 | 480 |
22 | 21/ | 21 | 8 | 10000000 | 64 | 168 |
23 | 22/ | 22 | 9 | 20000000 | 72 | 198 |
24 | 23/ | 23 | 33 | 30000000 | 264 | 759 |
25 | 24/ | 24 | 76 | 100000000 | 684 | 1824 |
26 | 25/ | 25 | 81 | 200000000 | 729 | 2025 |
27 | 26/ | 26 | 117 | 300000000 | 1053 | 3042 |
28 | 27/ | 27 | 35 | 1000000000 | 350 | 945 |
29 | 28/ | 28 | 64 | 2000000000 | 640 | 1792 |
30 | 29/ | 29 | 27 | 3000000000 | 270 | 783 |
... | ... | ... | ... | ... | ... | ... |
즉, 상기 각각 심볼에 대응하게 되면 4진 유니버설 코드가 일렬로 생성되는데,
이를 4자리씩 분할하면, 256종류의 8비트의 이진데이터가 생성되어 이를 전송하게 된다.
예를들어,
이진데이터 원본의 심볼이 A , B, 2/, 3/, 4/, 5/ , A , A ,A 라면, 4진유니버설 코드로는 1231 0203 0111 이므로, 4자리씩 끊어서 8비트로 변환하여 전송가능하다. 즉 1231==>01101110
0203 ==> 00100011
0111 ==> 00010101
수신측에서는 상기 8비트단위의 심볼을 4자리의 4진수로 역변환한뒤, 0 아닌 수를 만날때마다 분할하면, 아래와 같고
123102030111 ==> 1/2/3/10/20/30/1/1/1 각각의 4진유니버설 코드에 대응하여 K값을 구하면, 1,2,3,4,5,6,1,1,1 이고 이를 symbol로 변환하면, A,B, 2/,3/,4/,5/,A,A,A 로서 복원되고 각 심볼이 의미하는 이진데이터로,복구하면,
A ==> 1/1
B ==> 1/1/
2/ ==> 11/
3/ ==> 111/
4/ ==> 1111/
5/ ===> 11111/
이므로,
A,B, 2/,3/,4/,5/,A,A,A ==> 1/1 1/1/ 11/ 111/ 1111/ 11111/ 1/1 1/1 1/1
==> 1/11/1/11/111/1111/11111/1/11/11/1
이제 최초 비트가 0인지 1인지 상호약속으로 안다고 하면, 예를들어, 1로 시작한다고 하면
원본데이터는 1/00/1/00/111/0000/11111/0/11/00/1 과 같이 결정된다.
아래 그림은,
BL
-code series로
원본이진데이터를
분할한뒤
,
BL
-code series로부터
k 를
decoding하고,
k 로부터
BL
-N2 (N=
4)의
경우를
encoding한뒤
, 이 결과들을
연결시킨뒤
, 4자리의 단위로
BL
_42 코드를 분할하여
8b10b로
전
송후
수신측에서
다시 전송받은
BL
_
42코드를
유일복호성
규칙에 맞게 분할하여 decoding하여 k를 구하고 이를 이용하여
BL
-series code(
BL
-alpha,
omega등
)
으로
encoding하여 데이터를 결합함으로서 최종적인 압축 전송 및 해제가 일어나ㅡㄴ 과정을 도표화하였다.
Claims (1)
- 국내우선권주장 출원의 선출원으로서 별도의 청구범위는 기재치 않음
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160077931A KR20180000143A (ko) | 2016-06-22 | 2016-06-22 | 2진 유니버설 코드의 N진 유니버설 코드로의 encoding 및 decoding방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160077931A KR20180000143A (ko) | 2016-06-22 | 2016-06-22 | 2진 유니버설 코드의 N진 유니버설 코드로의 encoding 및 decoding방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180000143A true KR20180000143A (ko) | 2018-01-02 |
Family
ID=61004372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160077931A KR20180000143A (ko) | 2016-06-22 | 2016-06-22 | 2진 유니버설 코드의 N진 유니버설 코드로의 encoding 및 decoding방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20180000143A (ko) |
-
2016
- 2016-06-22 KR KR1020160077931A patent/KR20180000143A/ko unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101171697B1 (ko) | 정수-값 데이터의 스트림을 압축하는 시스템 및 방법 | |
US20110150351A1 (en) | Parallelization of variable length decoding | |
WO2018103452A1 (zh) | 信息位图的编码、解码方法、装置及存储介质 | |
KR102393743B1 (ko) | 모드 심볼들을 사용하는 인코더, 디코더 및 방법 | |
KR20180000143A (ko) | 2진 유니버설 코드의 N진 유니버설 코드로의 encoding 및 decoding방법 | |
KR20170142796A (ko) | 2진 유니버설 코드의 N진 복합 유니버설 코드로의 encoding 및 decoding방법 | |
KR20140145437A (ko) | 이진 데이터의 압축 및 압축해제 방법과 장치 | |
KR101632116B1 (ko) | 이진 데이터의 압축 및 복원 방법과 장치 | |
KR20150103992A (ko) | 이진 데이터의 압축 및 복원 방법과 장치 | |
Rani et al. | A survey on lossless text data compression techniques | |
KR20180002145A (ko) | Utf-8코드로 구성된 데이터의 유니버설 코드를 이용한 실시간 무손실 무사전 압축방법 | |
Siddique | Combinatorial Entropy Encoding | |
KR101734515B1 (ko) | 데이터 부호화 및 복호화 방법과 장치 | |
Jaradat et al. | A Simple Binary Run‐Length Compression Technique for Non‐Binary Sources Based on Source Mapping | |
KR101760070B1 (ko) | 데이터 부호화 및 복호화 방법과 장치 | |
KR20180006011A (ko) | Utf-8 코드 문자체계에 있어서, byte 1 에 대한 3비트 압축을 통한 한글메시지의 집중적 압축방법 및 그 장치 | |
Irshid | Gray code weighting system (Corresp.) | |
JPH04280517A (ja) | データ圧縮および復元方式 | |
𝐒𝐡𝐢𝐫𝐚𝐤𝐨𝐥𝟏 et al. | Performance optimization of dual stage algorithm for lossless data compression and decompression | |
KR101632115B1 (ko) | 이진 데이터의 압축 및 복원 방법과 장치 | |
KR20160115086A (ko) | 바이너리 클러스터를 이용한 이진스트리밍 데이터의 실시간 압축전송 및 복원방법 | |
KR101578608B1 (ko) | 일반 코드 생성을 위한 데이터 부호화 장치 및 데이터 복호화 장치 | |
JP5855777B2 (ja) | データ圧縮装置、データ復号装置、データ圧縮方法、データ復号方法およびデータ圧縮および復号システム | |
KR20180000138A (ko) | 2진 유니버설 코드의 N진 유니버설 코드로의 encoding 및 decoding방법 | |
KR20180005386A (ko) | Utf-8코드로 구성된 데이터의 유니버설 코드를 이용한 실시간 무손실 무사전 압축방법 |