W zależności od przyjętego alfabetu kodu Qu = {m...uq} a zwłaszcza od liczby elementów kod, mogą dla tego samego źródła być konstruowane różne kody.
Szczególne znaczenie mają kody binarne, których alfabet jest złożony z dwóch symboli "1" i "0", zatem q = 2.
Podstawowym wymaganiem stawianym kodom jest by były nieosobliwe, czyli żeby wszystkie wyrazy kodowe różniły się od siebie.
Przedstawia trzy różne kody binarne utworzone dla tego samego zbioru wiadomości elementarnych:
Wiad.elem.Fi F2 F3
xi 0 0 00
Kod Fi nie jest nieosobliwy, bo 2 różnym wiadomościom (x2, x4) odpowiadająte same wyrazy kodu, pozostałe są nieosobliwe. To jednak nie gwarantuje jednoznacznej dekodowalności. Na przykład, po użyciu kodu F2 możemy na wyjściu dostać wyraz kodowy 00011. Ten ciąg elementów alfabetu binarnego może odpowiadać następującym ciągom wiadomości elementarnych:
X1 Xi xi x2,
Xi x3 x2, X3 Xi x2
Zatem dla jednoznacznej dekodowalności kodu trzeba wprowadzić warunek ostrzejszy niż nieosobliwość.
W tym celu sformułujemy pojęcie N-krotnego rozszerzenia kodu przyporządkowującego wiadomościom elementarnym Xj wyrazy kodowe Sj. Takim rozszerzeniem jest kod, który ciągom wiadomości elementarnych (xp1, xp2,.... xpN) przypisuje ciągi wyrazów kodowych (sp1, sp2,.... spN) jest, przy czym każdy z wyrazów kodowych Spi przyporządkowany wiadomościom elementarnym xpi w oparciu o reguły kodu pierwotnego (nie rozszerzonego).
Kod nazywamy jednoznacznie dekodowałnym. wtedy i tylko wtedy, gdy N-krotne rozszerzenie tego kodu jest kodem nieosobliwym dla dowolnego skończonego N. Przykładem kodu lozszeizonego (i to nie nieosobliwegol jest właśnie przyporządkowanie I*
F
Xl Xl \! X; X, X3 X>
X? X\ X:
♦ 00011