# Código de correção de erro

Em computação, telecomunicações, teoria da informação e teoria de codificação, um código de correção de erro (CCE), em inglês error correction code (ECC), é usado para controlar erros em dados em canais de comunicação não confiáveis ​​ou ruidosos. A ideia central é que o remetente codifica a mensagem com uma redundância na forma de um CCE. O matemático americano Richard Hamming foi pioneiro nesse campo na década de 1940 e inventou o primeiro código de correção de erros em 1950: o código de Hamming (7,4). A redundância permite que o receptor detecte um número limitado de erros que podem ocorrer em qualquer lugar da mensagem e, com frequência, corrige esses erros sem retransmissão. O CCE dá ao receptor a capacidade de corrigir erros sem precisar de um canal reverso para solicitar a retransmissão de dados, mas ao custo de uma largura de banda de canal superior e fixa. O CCE é, portanto, aplicado em situações em que as retransmissões são caras ou impossíveis, como links de comunicação unidirecionais e na transmissão para vários receptores em multicast. Por exemplo, no caso de um satélite orbitando em torno de Urano, uma retransmissão por causa de erros de decodificação pode criar um atraso de 5 horas. Geralmente, as informações de ECC são adicionadas a dispositivos de armazenamento em massa para permitir a recuperação de dados corrompidos, são amplamente usadas em modems e são usadas em sistemas em que a memória principal é memória ECC.
O processamento de ECC num receptor pode ser aplicado a um fluxo de bits digital ou na demodulação de um portador modulado digitalmente. Para este último, o CCE é uma parte integral da conversão analógico-digital inicial no receptor. O decodificador Viterbi implementa um algoritmo de decisão suave para demodular dados digitais de um sinal analógico corrompido por ruído. Muitos codificadores/decodificadores ECC também podem gerar um sinal de taxa de erro de bit (bit-error rate - BER) que pode ser usado como feedback para refinar a eletrônica de recepção analógica.
As frações máximas de erros ou de bits ausentes que podem ser corrigidas são determinadas pelo projeto do código CCE, portanto, diferentes códigos de correção de erros são adequados para diferentes condições. Em geral, um código mais forte induz mais redundância que precisa ser transmitida usando a largura de banda disponível, o que reduz a taxa de bits efetiva enquanto melhora a taxa efetiva de sinal-ruído recebida. O teorema de codificação de canal barulhento de Claude Shannon responde à questão de quanta largura de banda resta para a comunicação de dados enquanto se usa o código mais eficiente que transforma a probabilidade de erro de decodificação em zero. Isto estabelece limites na taxa de transferência máxima de informação teórica de um canal com algum dado nível de ruído base. No entanto, a prova não é construtiva e, portanto, não dá uma ideia de como construir uma capacidade para obter código. Após anos de pesquisa, alguns sistemas CCE avançados hoje em dia chegam muito perto do máximo teórico.

## Exemplo de Aplicação

Os códigos corretores de erro podem ser aplicados, de maneira mais teórica, no estudo dos conteúdos de matemática básica do Ensino Médio. Isto, em razão de as ferramentas matemáticas aprendidas por alunos do E.M. serem comuns ao que se usa em tais códigos. Exemplo disso é o estudo das matrizes. Assim, pode-se, além de apresentar a teoria da Informação, mostrar uma utilidade para o que os alunos precisam estudar, buscando assim, motivá-los nos estudos.