일라이어스 감마 부호
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
일라이어스 감마 부호는 양의 정수를 부호화하는 데 사용되는 가변 길이 부호화 방식으로, 작은 값의 발생 빈도가 높고 큰 값의 발생 빈도가 낮은 데이터에 효율적이다. 부호화는 정수 x를 가장 높은 2의 거듭제곱 N을 찾아 N개의 0 비트를 쓰고, x의 이진수 표현을 추가하는 방식으로 이루어진다. 복호화는 0을 세어 N을 파악한 후, N개의 이진수 자릿수를 읽어 정수를 복원한다. 일라이어스 감마 부호는 데이터 압축에 활용되며, 델타 부호의 구성 요소로 사용되기도 한다. 일반화된 형태로 0 또는 음의 정수를 표현하거나, 지수 골롬 부호화를 통해 더 평평한 멱법칙 분포를 가진 정수를 부호화하는 데에도 사용된다.
더 읽어볼만한 페이지
- 무손실 압축 알고리즘 - VP9
VP9는 구글이 개발한 오픈 소스 비디오 코덱으로, VP8보다 압축 효율을 높이고 HEVC보다 나은 성능을 목표로 개발되었으며, WebM 형식으로 사용되고 주요 웹 브라우저와 넷플릭스, 유튜브 등에서 지원했으나 AV1의 등장으로 개발이 중단되었다. - 무손실 압축 알고리즘 - FLAC
FLAC은 조시 콜슨이 개발한 무손실 오디오 코덱으로, 원본 음질을 유지하면서 파일 크기를 줄이기 위해 오디오 데이터를 압축하며, 4~32비트 샘플 크기, 최대 8 채널을 지원하고, 미국 국립 문서 기록 관리청에서 디지털 오디오에 선호되는 형식으로 지정되었다. - 기수법 - 이진법
이진법은 0과 1 두 개의 숫자를 사용하는 밑이 2인 위치 기수법으로, 컴퓨터 과학의 기초가 되었으며 현대 컴퓨터에서 데이터를 저장하고 처리하는 데 사용된다. - 기수법 - 구진법
구진법은 9를 밑으로 하는 위치 기수법으로 0부터 8까지의 숫자를 사용하여 수를 나타내며, 3의 배수 표현이 간결하고 3의 역수는 유한소수로 표현되는 특징이 있다.
일라이어스 감마 부호 | |
---|---|
일반 정보 | |
종류 | 무손실 데이터 압축 |
사용 분야 | 부호 없는 정수 인코딩 가변 길이 부호화 |
개발자 | 피터 일라이어스 |
발표 시기 | 1975년 |
세부 사항 | |
특징 | 단순한 구조 구현 용이성 |
장점 | 작은 값에 효율적 |
단점 | 큰 값에 비효율적 |
관련 부호화 | 일라이어스 델타 부호 피보나치 부호 골롬 부호 지수-골롬 부호 |
2. 부호화 (Encoding)
양의 정수 ''x'' (x ≥ 1)를 일라이어스 감마 부호로 부호화하는 과정은 다음과 같다.
# 를 포함하는 가장 높은 2의 거듭제곱으로 정의한다. 즉, 2''N'' ≤ ''x'' < 2''N''+1.
# 개의 0 비트를 쓴다.
# 의 이진수 형태를 추가한다. 즉, 비트의 이진수이다.
이와 동일한 과정을 표현하는 또 다른 방법은 다음과 같다.
# 을 단항 기수법으로 인코딩한다. 즉, 개의 0 다음에 1이 오는 형식이다.
# 의 나머지 이진수 자릿수를 이 의 표현에 추가한다.
어떤 숫자 를 표현하기 위해 엘리아스 감마(γ)는 비트를 사용한다.
코드는 다음과 같이 시작한다.
숫자 | 이진수 | γ 인코딩 | 암시적 확률 |
---|---|---|---|
1 = 20 + 0 | 1 | 1 | 1/2 |
colspan=4| | |||
2 = 21 + 0 | 1 0 | 0 1 0 | 1/8 |
3 = 21 + 1 | 1 1 | 0 1 1 | 1/8 |
colspan=4| | |||
4 = 22 + 0 | 1 00 | 00 1 00 | 1/32 |
5 = 22 + 1 | 1 01 | 00 1 01 | 1/32 |
6 = 22 + 2 | 1 10 | 00 1 10 | 1/32 |
7 = 22 + 3 | 1 11 | 00 1 11 | 1/32 |
colspan=4| | |||
8 = 23 + 0 | 1 000 | 000 1 000 | 1/128 |
9 = 23 + 1 | 1 001 | 000 1 001 | 1/128 |
10 = 23 + 2 | 1 010 | 000 1 010 | 1/128 |
11 = 23 + 3 | 1 011 | 000 1 011 | 1/128 |
12 = 23 + 4 | 1 100 | 000 1 100 | 1/128 |
13 = 23 + 5 | 1 101 | 000 1 101 | 1/128 |
14 = 23 + 6 | 1 110 | 000 1 110 | 1/128 |
15 = 23 + 7 | 1 111 | 000 1 111 | 1/128 |
colspan=4| | |||
16 = 24 + 0 | 1 0000 | 0000 1 0000 | 1/512 |
17 = 24 + 1 | 1 0001 | 0000 1 0001 | 1/512 |
2. 1. 단계별 부호화
대상 정수 X의 2진수 표현을 대상으로 한다. 우선, X의 자릿수보다 1 작은 수만큼 "0"을 출력한다. 다음으로, X를 그대로 출력한다. 그 결과가 감마 부호이다.대상 숫자 | 2진수 표현 | 출력 |
---|---|---|
1 | 1 | 1 |
2 | 10 | 010 |
3 | 11 | 011 |
4 | 100 | 00100 |
5 | 101 | 00101 |
6 | 110 | 00110 |
7 | 111 | 00111 |
8 | 1000 | 0001000 |
9 | 1001 | 0001001 |
10 | 1010 | 0001010 |
X가 큰 값 (6비트 이상)이라면, 델타 부호가 더 짧은 부호를 출력할 수 있다.
2. 2. 단항 부호화를 이용한 표현
대상 정수 X의 2진수 표현을 대상으로 한다. 우선, X의 자릿수보다 1 작은 수만큼 "0"을 출력한다. 다음으로, X를 그대로 출력한다. 그 결과가 감마 부호이다.대상 숫자 | 2진수 표현 | 출력 |
---|---|---|
1 | 1 | 1 |
2 | 10 | 010 |
3 | 11 | 011 |
4 | 100 | 00100 |
5 | 101 | 00101 |
6 | 110 | 00110 |
7 | 111 | 00111 |
8 | 1000 | 0001000 |
9 | 1001 | 0001001 |
10 | 1010 | 0001010 |
X가 큰 값 (6비트 이상)이라면, 델타 부호가 더 짧은 부호를 출력할 수 있다.
2. 3. 부호화 예시
대상 정수 X의 2진수 표현을 대상으로 한다. 우선, X의 자릿수보다 1 작은 수만큼 "0"을 출력한다. 다음으로, X를 그대로 출력한다. 그 결과가 감마 부호이다.대상 숫자 | 2진수 표현 | 출력 |
---|---|---|
1 | 1 | 1 |
2 | 10 | 010 |
3 | 11 | 011 |
4 | 100 | 00100 |
5 | 101 | 00101 |
6 | 110 | 00110 |
7 | 111 | 00111 |
8 | 1000 | 0001000 |
9 | 1001 | 0001001 |
10 | 1010 | 0001010 |
일라이어스 감마 부호로 인코딩된 정수를 복호화하는 과정은 다음과 같다.
일라이어스 감마 부호는 작은 값의 발생 빈도가 높고 큰 값의 발생 빈도가 낮은 데이터에 대해 효율적이며, 데이터 압축 등에 활용된다. 감마 코딩은 가장 큰 인코딩된 값을 미리 알 수 없거나, 작은 값이 큰 값보다 훨씬 더 빈번한 데이터를 압축하는 데 사용된다. 예를 들어, 5와 같은 작은 숫자를 고정된 8비트 크기로 저장하면
엘리아스 감마 부호는 0 또는 음의 정수를 직접 표현할 수 없다. 0을 처리하는 한 가지 방법은 코딩 전에 1을 더하고 디코딩 후에 1을 빼는 것이다. 또 다른 방법은 각 0이 아닌 코드 앞에 1을 붙이고 0을 단일 0으로 코딩하는 것이다.
X가 큰 값 (6비트 이상)이라면, 델타 부호가 더 짧은 부호를 출력할 수 있다.
3. 복호화 (Decoding)
# 스트림에서 0을 읽어 첫 번째 1이 나올 때까지 0의 개수를 센다. 이 0의 개수를 ''N''이라고 한다.
# 첫 번째 1을 정수의 첫 번째 숫자, 즉 2''N''의 값을 가진 숫자로 간주하고, 나머지 ''N''개의 정수 자릿수를 읽는다.
4. 활용 (Uses)
00000101
이 되지만, γ-인코딩 가변 비트 버전은 00 1 01
이 되어 3비트가 덜 필요하다. 반대로, 254와 같은 큰 값을 고정 8비트 크기로 저장하면 11111110
이 되지만, γ-인코딩 가변 비트 버전은 0000000 1 1111110
이 되어 7비트가 더 필요하다.대상 숫자 2진수 표현 출력 1 1 1 2 10 010 3 11 011 4 100 00100 5 101 00101 6 110 00110 7 111 00111 8 1000 0001000 9 1001 0001001 10 1010 0001010
X가 큰 값 (6비트 이상)이라면, 델타 부호가 더 짧은 부호를 출력할 수 있다. 감마 부호는 엘리아스 델타 부호의 구성 요소로 사용된다.
5. 일반화 (Generalizations)
모든 정수를 코딩하는 한 가지 방법은 전단사를 설정하는 것이다. 예를 들어 정수(0, −1, 1, −2, 2, −3, 3, ...)를 (1, 2, 3, 4, 5, 6, 7, ...)에 매핑한다. 소프트웨어에서 이는 음이 아닌 입력을 홀수 출력에, 음의 입력을 짝수 출력에 매핑하여 가장 낮은 비트가 반전된 부호 비트가 되도록 함으로써 가장 쉽게 수행된다.
수식으로 표현하면 다음과 같다.
:
지수 골롬 부호화는 감마 코드를 "더 평평한" 멱법칙 분포를 가진 정수로 일반화하며, 이는 골롬 부호화가 단항 코드를 일반화하는 것과 같다. 이것은 숫자를 2의 거듭제곱과 같은 양의 제수로 나누고, 몫보다 1 더 큰 값에 대한 감마 코드를 쓰고, 일반적인 이진 코드로 나머지를 쓰는 것을 포함한다. 대상 정수 X의 2진수 표현을 대상으로 할때, 우선, X의 자릿수보다 1 작은 수만큼 "0"을 출력한다. 다음으로, X를 그대로 출력한다. 그 결과가 감마 부호이다.대상 숫자 2진수 표현 출력 1 1 1 2 10 010 3 11 011 4 100 00100 5 101 00101 6 110 00110 7 111 00111 8 1000 0001000 9 1001 0001001 10 1010 0001010
5. 1. 0 또는 음수 표현
5. 2. 지수 골롬 부호화 (Exponential-Golomb coding)
지수 골롬 부호화는 골롬 부호화가 단항 코드를 일반화하는 것과 같이 감마 코드를 "더 평평한" 멱법칙 분포를 가진 정수로 일반화한다. 이는 숫자를 2의 거듭제곱과 같은 양의 제수로 나누고, 몫보다 1 더 큰 값에 대한 감마 코드를 쓰고, 일반적인 이진 코드로 나머지를 쓰는 것을 포함한다.
대상 숫자 | 2진수 표현 | 출력 |
---|---|---|
1 | 1 | 1 |
2 | 10 | 010 |
3 | 11 | 011 |
4 | 100 | 00100 |
5 | 101 | 00101 |
6 | 110 | 00110 |
7 | 111 | 00111 |
8 | 1000 | 0001000 |
9 | 1001 | 0001001 |
10 | 1010 | 0001010 |
대상 정수 X의 2진수 표현을 대상으로 할때, 우선 X의 자릿수보다 1 작은 수만큼 "0"을 출력하고, 다음으로 X를 그대로 출력하면 그 결과가 감마 부호가 된다. X가 큰 값 (6비트 이상)이라면, 델타 부호가 더 짧은 부호를 출력할 수 있다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com