Dependendo do código de correção de erros utilizado ( bloco ou árvore) , a palavra de código poderá ser algumas vezes maior que a informação original recebida pelo codificador. No momento de sua utilizaçào, a palavra de código e decodificada, e no caso de conter erro, este será corrigido com o uso do código de correção recebido junto com a informação, e a informação fornecida volta a ser a mesma recebida pelo codificador.
Os códigos estão divididos em cíclicos e não-cíclicos. Os códigos cíclicos são aqueles em que uma rotação realizada na palavra de código gera uma nova palavra de código, o mesmo conceito não se aplica para códigos não-cíclicos.
O código de Hamming é descrito por uma matriz de verificação de paridade H, contendo m linhas e colunas. Quando uma palavra de codigo X e transmitida, a palavra recebida será X + E, onde E representa o vetor erro. Se não ocorrer erros, o vetor erro sera igual a zero. Se ocorrer um erro, o vetor E conterá apenas um bit 1, e os demais estarão em 0. O vetor recebido e verificado multiplicando pela matriz H. Assim, a verificação é função apenas do vetor erro E, e da matriz de paridade H. S e ocorreu um erro em um unico bit, este estara representado por 1 no vetor E, e multiplicando-se esse vetor pela matriz H, obtém-se a linha da matriz e a palavra correta.
Um dos maiores problemas de se usar códigos de correção de erros, e que quanto maior a habilidade de corrigir erros, maior será o tamanho do código. Outro problema é quanto a complexidade matemática para implementação dos codificadores e decodificadores.