Instruções

Código de Gray

O Código de Gray é uma forma de codificação binária, onde as transições entre números consecutivos diferem apenas em um bit. Esta é uma codificação útil para reduzir riscos de dados de hardware com valores que se alteram rapidamente e/ou estejam associados ao hardware mais lento como entradas. Ele também é útil para gerar entradas para os mapas de Karnaugh, em ordem, da esquerda para a direita e de cima para baixo.

O que fazer:

Crie uma função para codificar um número e decodifique um número a partir do código de Gray. A função deve receber dois parâmetros. O primeiro deve ser um booleano. A função deve codificar para true e decodificar para false. O segundo parâmetro seria o número a ser codificado/decodificado. Exibir as representações binárias normais, as representações do código de Gray e valores do código de Gray decodificados para todos os números binários de 5 bits (0-31 inclusive, mas os 0s iniciais não são necessários). Existem muitos códigos de Gray possíveis. A seguir, temos um que codifica o que é chamado de "código de Gray refletido em binário." Codificação (o MSB - bit mais significativo - é o bit 0, b é binário e g é o código de Gray): <pre>if b[i-1] = 1 g[i] = not b[i] else g[i] = b[i] </pre> Ou: <pre>g = b xor (b logically right shifted 1 time) </pre> Decodificação (o MSB - bit mais significativo - é o bit 0, b é binário e g é o código de Gray): <pre>b[0] = g[0]<br> for other bits: b[i] = g[i] xor b[i-1] </pre>

Critérios de Aceitação:

Testes:

  • `gray` deve ser uma função.
  • `gray(true,177)` deve retornar um número.
  • `gray(true,177)` deve retornar `233`.
  • `gray(true,425)` deve retornar `381`.
  • `gray(true,870)` deve retornar `725`.
  • `gray(false,233)` deve retornar `177`.
  • `gray(false,381)` deve retornar `425`.
  • `gray(false,725)` deve retornar `870`.

Console