Você está na página 1de 2

Departamento de Engenharia Elétrica

Computação para Engenharia (CPE) - Turma B


Prof.: Cláudia Barenco Abbas

Tarefa Casa 01 (20.03.2018)

Objetivo:
O objetivo deste programa é gerar um código verificador (CRC) de uma sequência de 14 bits ou
menos conforme algoritmo mostrado abaixo.

Motivação:
Os bits que trafegam por uma rede de comunicação de dados podem sofrer alterações ou perdas
devido a problemas como interferências no meio físico.
Para verificação da integridade dos bits quando estes são recebidos na máquina de destino foram
desenvolvidos muitos algoritmos matemáticos como o que está descrito abaixo.

Descrição do algoritmo:
Neste exemplo serão codificados 14 bits e será gerado um CRC de 3 bits, usando o polinômio
x3 + x + 1.
Este polinômio está escrito com coeficientes binários. É um polinômio de terceira ordem com
quatro coeficientes (1x3 + 0x2 + 1x + 1). Neste caso, os coeficientes são 1,0,1 e 1. O resultado do
cálculo CRC será de 3 bits.
Começamos com a sequência de bits:
11010011101100

O primeiro passo é colocar os bits 000 no lugar dos 3 bits de CRC.


Então teremos
11010011101100 000 <--- bits originais com os 3 bits de CRC
1011 <--- divisor (4 bits) = x³ + x + 1
------------------
01100011101100 000 <--- resultado da operação .XOR.

O algoritmo realiza a operação booleana .XOR entre os bits originais e os bits do CRC e o divisor.
Caso não haja bits para realizar a operação simplesmente copia-se os bits.
O divisor é movido para direita a próxima casa que tenha o bit 1 (ou se for o caso a mesma casa em
que esteja parado) e realiza-se de novo a operação .XOR. Realiza-se esta mesma operação até que
todos os bits do dividendo sejam o bit 0.
01100011101100 000 <--- resultado anterior
1011 <--- divisor foi empurrado 1 casa para a direita
00111011101100 000 < --- resultado da operação .XOR.
1011
00010111101100 000 <--- resultado da operação .XOR.
1011
00000001101100 000 <--- note que o dividor moveu para a próxima casa com o bit
1. Não necessariamente deve mover para a próxima casa.
1011
00000000110100 000 <--- resultado da operação .XOR.
1011
00000000011000 000 <--- resultado da operação .XOR.
1011
00000000001110 000 <--- resultado da operação .XOR.
1011
00000000000101 000 <--- resultado da operação .XOR.
101 1
-----------------
00000000000000 100 <--- Os 3 bits do CRC. O cálculo termina aqui pois o
dividendo possui todos os bits igual a 0.

O resultado do CRC deste exemplo é 100.


Desenvolva um programa que solicite ao usuário para digitar uma sequência de 14 bits e calcule o
CRC de 3 bits desta sequência. O programa deve mostrar o resultado do CRC na tela.

O prazo de entrega deste programa é Terça-feira dia 27/03/2018 as 23:55 horas.

NOTAS IMPORTANTES:

- Para envio do seu programa, o código fonte (*.cpp) deve


ser enviado com o seguinte nome :
matrícula do aluno no formato AANúmero (AA são os dois dígitos do ano da matrícula).
- Não serão corrigidos programas que não sigam este formato de nome.
- Não serão corrigidos programas caso seja enviado somente o arquivo .dev (este arquivo não
contem o programa de vocês. Este arquivo é somente um arquivo de controle do DEV C++). Neste
caso a nota será 0 (zero).
- Também não serão corrigidos arquivos .exe. Estes são os arquivos executáveis do programa e não
o programa fonte. Neste caso a nota será 0 (zero).
- Somente serão aceitos programas enviados na plataforma CampusVirtual dentro do prazo
estipulado.
- Não serão corrigidos programas enviados (observe no CampusVirtual se você realmente enviou
seu programa) por mensagens ou outra ferramenta digital.
- Não serão corrigidos e terão nota 0 programas com erros de compilação.
- Podem utilizar a ferramenta Forum de Dúvidas no CampusVirtual para tirarem dúvidas entre
vocês e os colegas de sala.

Você também pode gostar