KR20170142796A - 2진 유니버설 코드의 N진 복합 유니버설 코드로의 encoding 및 decoding방법 - Google Patents

2진 유니버설 코드의 N진 복합 유니버설 코드로의 encoding 및 decoding방법 Download PDF

Info

Publication number
KR20170142796A
KR20170142796A KR1020160076908A KR20160076908A KR20170142796A KR 20170142796 A KR20170142796 A KR 20170142796A KR 1020160076908 A KR1020160076908 A KR 1020160076908A KR 20160076908 A KR20160076908 A KR 20160076908A KR 20170142796 A KR20170142796 A KR 20170142796A
Authority
KR
South Korea
Prior art keywords
universal code
quaternary
code
binary
universal
Prior art date
Application number
KR1020160076908A
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 KR1020160076908A priority Critical patent/KR20170142796A/ko
Publication of KR20170142796A publication Critical patent/KR20170142796A/ko

Links

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/28Programmable structures, i.e. where the code converter contains apparatus which is operator-changeable to modify the conversion process
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

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

Abstract

임의의 순번(K>=1) 에 대하여, 4진 유니버설 코드를 생성하는 방법에 관한 발명으로서,
먼저 아래표와 같이, 4진의 경우 최상위 자리가 “2” 또는 “3”으로 구성되고, 그 이하자리가 “0” 또는 “1”로 구성되는 4진 유니버설 코드이다.
예를들어, 2 / 3 / 211 / 301 / 210/ 2000 과 같이 구성된 4진유니버설 코드의 경우, “2”또는 “3”을 만날 때 마다 데이터를 분할하여 읽으면 유일복호성을 만족시키는 유니버설코드로 완벽히 분할히 된다.
1) 임의의 순번 K 로부터 M을 구한다.
2) 다음으로 M으로부터 P값을 구하는데,
3) P 값으로부터, 4진 유니버설 코드에 있어서, 최상위 자리의 “2” 또는 “3” 이후에 존재하는 숫자를 구하기 위하여, 아래와 같은 수식으로 R을 구하고.
4) R을 구하면 이를 P 비트의 2진수로 변환하여 “0” 및 “1”로 구성된 이진수 형태로 변환하고,
R은 이때 P 비트의 길이를 가지며, P비트 보다 작을 경우, leading zero 로서 “0”을 최상위 비트로부터 채워넣어서, P비트로 만든다.
5) 최상위 자리는 K 가 홀수일 때 “2” , 짝수일 때 “3”을 배치하여(물론 홀짝에 따라 반대로 할당할수 있으며, 특정한 약속에 따라 K값에 따라 2,3을 달리 할당할수 있다(이를 통해 암호화가 가능해진다))
이렇게 K 라는 순번에 따라 결정된 “2” 또는 “3” 뒤에 이진화된 R을 배치하여, 4진화된 유니버설 코드로 구성한하여 최종적인 순번 K에 따른 유니버설 코드를 생성한다.

Description

2진 유니버설 코드의 N진 복합 유니버설 코드로의 encoding 및 decoding방법{BINARY UNIVERSAL CODE To QUARDRUPLE UNIVERSAL CODE ENCODING AND DECODING METHOD}
라인코딩,유니버설코드
라인코딩,유니버설코드
발명을 실시하기 위한 구체적인 내용에 상술
발명을 실시하기 위한 구체적인 내용에 상술
발명을 실시하기 위한 구체적인 내용에 상술
임의의 순번(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진 유니버설 코드를 만들때 아래와 같은 수식을 이용한다.
물론 이와 같은 수식과 동일한 결과를 가져오는 모든 함수는 본 발명의 권리범위에 속한다.
Figure pat00001
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-N2-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 값이 구해진다.
Figure pat00002
이렇게 순번 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을 빼주고,, A 심볼(즉 1/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
... ... ... ... ... ... ...
상기와 같은 바이너리 클러스터의 모든 종류는 아래와 같다. 이와 같은 바이너리 클러스터도 유일복호성이 있으며, 유니버설 코드로서 기능하며 이를 본 발명에서는 BL-omega code라고 명명하였다. 순번 K 일때 BL-omega이며,
K BL-omega
1 11
2 01
3 101
4 001
5 1001
6 0001
7 10001
8 00001
9 100001
10 000001
11 1000001
12 0000001
13 10000001
14 00000001
15 100000001
16 000000001
17 1000000001
18 0000000001
19 10000000001
20 00000000001
21 100000000001
22 000000000001
23 1000000000001
24 0000000000001
25 10000000000001
26 00000000000001
27 100000000000001
28 000000000000001
29 1000000000000001
30 0000000000000001
... ...
encoding방법은, K 가 짝수일때는,
K 를 2로 나눈 몫을 Q라고 할때, Q개의 "0" 에 이어서, 1개의 "1"로 구성하고,
K 가 홀수일때는,
K 를 2로 나눈 몫을 Q라고 할때, 최상위의 "1" 에 이어서, Q개의 "0" 그리고 최하위의 "1"로 구성된 형태로 K에 따라 encoding된다.
decoding방법[1]은,
1) 최상위가 "1"인 경우는, 이후의 0 의 갯수가 Q이므로,
K = 2Q + 1 로 decoding하고,
2) 최상위가 "0" 인경우는 최상위 포함 0의 갯수가 Q이므로,
K = 2Q로 decoding한다.
혹은
decoding방법[2]
1) 최상위가 "1" 인 경우에,
유니버설 코드의 길이를 L이라고 할때, Q = L-2 이고,
K = 2Q+1 로 decoding하고,
2) 최상위가 "0" 인 경우에는, Q = L-1 이고,
K = 2Q로 decoding한다.
예를들어, "1"로 끝나는 397313 비트의 임의의 이진데이터에 대하여,
상기 방법에 따른 방식으로 분할하여 생성된 유니버설 코드(BL-omega)의 분포는 다음표와 같다. 지면관계상 일부만 표현한다.
전체 107,623 개의 유니버설 코드로 데이터는 완벽히 분할되었다.
BL -omega universal code frequency
0000000000000000000000000000000000000001 2
0000000000000000000000000000000001 2
000000000000000000000000000000001 5
00000000000000000000000000000001 27
0000000000000000000000000000001 11
000000000000000000000000000001 33
00000000000000000000000000001 26
0000000000000000000000000001 52
000000000000000000000000001 63
00000000000000000000000001 34
0000000000000000000000001 41
000000000000000000000001 2
00000000000000000000001 1
0000000000000000000001 12
000000000000000000001 12
00000000000000000001 20
0000000000000000001 8
000000000000000001 32
00000000000000001 66
0000000000000001 90
000000000000001 84
00000000000001 280
0000000000001 264
000000000001 587
00000000001 408
0000000001 241
000000001 215
00000001 420
0000001 740
000001 1518
00001 3013
0001 6549
001 12296
01 23329
……
100000000000000000000000000000000000001 2
100000000000000000000000000000000001 2
10000000000000000000000000000000001 2
1000000000000000000000000000000001 1
100000000000000000000000000000001 4
10000000000000000000000000000001 14
1000000000000000000000000000001 3
100000000000000000000000000001 19
10000000000000000000000000001 21
1000000000000000000000000001 24
100000000000000000000000001 22
10000000000000000000000001 25
100000000000000000000001 4
10000000000000000000001 2
1000000000000000000001 10
100000000000000000001 6
10000000000000000001 4
1000000000000000001 1
100000000000000001 8
10000000000000001 12
1000000000000001 127
100000000000001 16
10000000000001 353
1000000000001 75
100000000001 165
10000000001 106
1000000001 86
100000001 185
10000001 346
1000001 730
100001 1581
10001 3795
1001 6155
101 11793
11 31313
한편 상기 표의 BL-omega 코드를 decoding한 K 값을 본 발명의 4진 유니버설 코드와 매핑하면 아래와 같다.
즉, 최상위 비트가 "0"이고, 길이가 2696비트인 BL-OMEGA코드는 4진화된 유니버설 코드인 301010000111 로 변환된다는 의미이며, 이렇게 모든 BL-N2코드들은 아래그림과 같이 연속적인 숫자로 묶여지면서, 특정 G 자리씩 분할되어 전송된다 N=4일때는 G=4가 최적이고, N=16일때는 G=2일때가 8b10b 전송을 위해서는 최적으로 여겨진다.
Figure pat00003
한편, 4진화된 유니비설 코드는 4자리씩 끊어 읽어서,8b10B방식으로 전송할 수 있는데, 이때 총 소요되는 비트수는 181997자리의 4진수이며, 이를 4개씩 나누어 8B10B전송을 위해 10비트로 변환하면, 181997/4 * 10 = 454992.5 비트가 소요된다. 한편 그대로 이를 2진 코드인 원본을 8B10B로 보내면, 397313/8*10= 496641.3 비트가 소요되어, 전체적으로 4만비트 정도를 더 절감할 수 있다.
아래 그림은, 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하여 데이터를 결합함으로서 최종적인 압축 전송 및 해제가 일어나ㅡㄴ 과정을 도표화하였다 .
Figure pat00004

Claims (1)

  1. 국내우선권주장 출원의 선출원으로서 별도의 청구범위는 기재치 않음
KR1020160076908A 2016-06-20 2016-06-20 2진 유니버설 코드의 N진 복합 유니버설 코드로의 encoding 및 decoding방법 KR20170142796A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160076908A KR20170142796A (ko) 2016-06-20 2016-06-20 2진 유니버설 코드의 N진 복합 유니버설 코드로의 encoding 및 decoding방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160076908A KR20170142796A (ko) 2016-06-20 2016-06-20 2진 유니버설 코드의 N진 복합 유니버설 코드로의 encoding 및 decoding방법

Publications (1)

Publication Number Publication Date
KR20170142796A true KR20170142796A (ko) 2017-12-28

Family

ID=60939597

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160076908A KR20170142796A (ko) 2016-06-20 2016-06-20 2진 유니버설 코드의 N진 복합 유니버설 코드로의 encoding 및 decoding방법

Country Status (1)

Country Link
KR (1) KR20170142796A (ko)

Similar Documents

Publication Publication Date Title
CN101501999A (zh) 数据编码
JP3588349B2 (ja) 10進数を2進数にエンコード/デコードする方法
JPH05300027A (ja) 可逆可変長符号化方式
CN105191145A (zh) 数据编码器、数据解码器及编解码方法
CN104378634B (zh) 输入符号二值化的方法以及从码字中产生索引值的方法
CN109495211A (zh) 一种信道编码和解码方法
Nandi et al. Modified compression techniques based on optimality of LZW code (MOLZW)
WO2021046817A1 (zh) 点云数据的编解码方法、系统和存储介质
KR20170142796A (ko) 2진 유니버설 코드의 N진 복합 유니버설 코드로의 encoding 및 decoding방법
CN103746701A (zh) 一种用于Rice无损数据压缩的快速编码选项选择方法
Yokoo On the stationary distribution of asymmetric binary systems
US20130222159A1 (en) Entropy method of binary-ternary lossless data coding
KR19990075942A (ko) 적응적인 산술 부호화 및 그 복호화 방법
US5034741A (en) Variable length bit patterns for data representation
KR20180000143A (ko) 2진 유니버설 코드의 N진 유니버설 코드로의 encoding 및 decoding방법
US10528641B2 (en) Encoder and decoder for transmission of coefficients to a neural network
KR20180000138A (ko) 2진 유니버설 코드의 N진 유니버설 코드로의 encoding 및 decoding방법
KR20170133097A (ko) 2진 유니버설 코드의 4진 유니버설 코드로의 encoding 및 decoding방법
Howard et al. Parallel lossless image compression using Huffman and arithmetic coding
KR101760070B1 (ko) 데이터 부호화 및 복호화 방법과 장치
Jaradat et al. A Simple Binary Run‐Length Compression Technique for Non‐Binary Sources Based on Source Mapping
KR20170140613A (ko) 2진 유니버설 코드의 N진2진 복합 유니버설 코드로의 encoding 및 decoding방법
JPH04280517A (ja) データ圧縮および復元方式
KR20170128842A (ko) 2진 유니버설 코드의 4진 유니버설 코드로의 encoding 및 decoding방법
US11750213B1 (en) Train-linking lossless compressor of numeric values