Informática, perguntado por diegoanalistasistema, 6 meses atrás

Interferências, ruídos e outros fenômenos que prejudicam a integridade dos dados são
problemas fundamentais quando computadores se comunicam em rede. Para detectar alterações
em bits, os dados são sempre enviados com redundâncias computadas a partir dos bits originais.
Este tipo de técnica de detecção de erros costuma receber o nome de checksum, e segue o mesmo
princípio dos dígitos verificadores presentes em diversos documentos e identificadores numéricos
(por exemplo, números de contas e agências bancárias).
Uma das técnicas de detecção de erros mais simples e mais usadas é o teste de paridade.
Cada byte é enviado junto com um bit adicional, que indica se o número de bits com valor 1 no byte
é par (bit redundante = 0) ou ímpar (bit redundante = 1). Por exemplo um byte com o valor 8 tem os
bits 00001000, ou seja, apenas 1 bit “setado”, portanto a sua paridade é 1. Já um byte com o valor
0x55 é representado pelos bits 01010101 – 4 bits “setados”, portanto a sua paridade é 0 (zero). A
função calculaParidade deve receber como parâmetro um byte enviado ou recebido através de uma
conexão, e retornar o valor do bit redundante (0 ou 1).
Para demonstrar o funcionamento demonstre o cálculo de pariedade de cada dígito do seu
primeiro nome. Utilize o valor dos caracteres na tabela ASCII (disponível no anexo).
Exemplo:
Letra Valor decimal na
tabela ASCII Valor binário Pariedade
U 85 0101 0101 0
N 78 0100 1110 0
I 73 0100 1001 1
N 78 0100 1110 0
T 84 0101 0100 1
E 69 0100 0101 1
R 82 0101 0010 1


carlajuliana41: =================MVF5SYSTEM-ASSESSORIA==========================

Entre em contato com a nossa equipe que vamos assessorar com esse trabalho

CONTATO - WHATS: (15)98170-8778
Mais de 10 anos no mercado acadêmico
Tele gram:(15)981708778
==================================================================

Soluções para a tarefa

Respondido por fernando87979
1

Resposta:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

unsigned int calculaParidade (unsigned char b);

int main()

{

   // FERNANDO

   unsigned char nome[101];

   int i;

   printf("Digite uma palavra:\n");

   scanf(" %100[^\n]", nome);

   for(i = 0; nome[i]; i++)

   {

       printf("%c - paridade: %u\n", nome[i], calculaParidade(nome[i]));

   }

   return 0;

}

unsigned int calculaParidade (unsigned char b)

{

   // Valor decimal

   int x = (int)b;

   // Armazenar os bits

   int dgs[8];

   int i = 7, j;

   int cont = 0;

   while(x > 1)

   {

       // Resto da divisao por 2

       dgs[i] = x % 2;

       i--;

       // Divide por 2

       x /= 2;

   }

   dgs[i] = x;

   for(j = i; j < 8; j++)

   {

       if(dgs[j] == 1)

       {

           // Se for 1, incrementa cont

           cont++;

       }

   }

   if((cont % 2) == 0)

   {

       // Se cont for par, retorna 0

       return 0;

   }

   else

   {

       // Se for impar, retorna 1

       return 1;

   }

}

Explicação:

Perguntas interessantes