// 콤마 코드 – 자동으로 경계를 인식하는 자기 구분 이진 코드
연속된 코드 사이에 별도의 구분 기호가 필요 없습니다.
유니ary 길이 접두사 뒤에 데이터 비트를 붙입니다.
탭루 변형을 사용하면 필요한 경우 특정 비트 패턴을 피할 수 있습니다.
콤마 코드는 정수 n을 다음과 같이 인코딩합니다. 1) 비트 길이 L-1을 유니ary로 기록합니다(L-1개의 1 뒤에 0). 2) 선행 1을 제거한 2진 표현을 뒤에 붙입니다. 탭루 변형은 11과 같은 패턴을 피하도록 인코딩을 변경하며, 이는 특정 통신 채널에서 유용합니다.
Basic Comma Code: 0 → 0 (special case) 1 → 01 (0 ones + 0 + empty) 2 → 100 (1 one + 0 + '0') 3 → 101 (1 one + 0 + '1') 4 → 11000 (2 ones + 0 + '00') 5 → 11001 (2 ones + 0 + '01') Concatenated: 1,2,3 → 01 100 101 → 01100101 Self-delimiting - can decode without separators Taboo variant avoids '11' pattern: Uses different encoding to prevent consecutive 1s
콤마 코드는 비트 길이를 유니ary로 표시하는 길이 접두사와 그 뒤의 데이터 비트로 정수를 표현하는 자기 구분 이진 코드입니다. 여러 코드를 명시적인 구분 기호 없이 리스트 원소처럼 이어 붙일 수 있기 때문에 "콤마" 코드라고 부릅니다.
유니ary 길이 접두사가 뒤따르는 데이터 비트 수를 정확히 알려 줍니다. 1이 k개 연속된 다음 0이 나타나면, 그 뒤에서 정확히 k비트를 읽으면 됩니다. 이 덕분에 여러 코드를 별도의 구분자 없이 연결할 수 있습니다.
탭루 콤마 코드는 11과 같은 특정 비트 패턴을 피하도록 인코딩 방식을 수정한 것입니다. 동기화 마커처럼 특정 패턴에 특별한 의미가 있는 통신 채널에서 유용합니다.
콤마 코드는 데이터 압축, 네트워크 프로토콜, 스토리지 시스템 등에서 자기 구분 특성이 중요한 경우에 사용됩니다. 길이가 다양한 여러 정수를 별도의 길이 필드 없이 저장해야 할 때 특히 유용합니다.