Código Gray: mudanças entre as edições

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Moecke (discussão | contribs)
Moecke (discussão | contribs)
 
Linha 132: Linha 132:
| style="vertical-align:middle;" | 1000
| style="vertical-align:middle;" | 1000
| style="vertical-align:middle;" | 1000.0000.0000.0000
| style="vertical-align:middle;" | 1000.0000.0000.0000
|}
{| class="wikitable" style="text-align:center; background-color:#F8F9FA; color:#202122;"
|- style="font-weight:bold; background-color:#EAECF0;"
! Decimal
! Binário
! Gray
! Decimal
! Binário
! Gray
|-
| 0
| 0000
| 0000
| 8
| 1000
| 1100
|-
| 1
| 0001
| 0001
| 9
| 1001
| 1101
|-
| 2
| 0010
| 0011
| 10
| 1010
| 1111
|-
| 3
| 0011
| 0010
| 11
| 1011
| 1110
|-
| 4
| 0100
| 0110
| 12
| 1100
| 1010
|-
| 5
| 0101
| 0111
| 13
| 1101
| 1011
|-
| 6
| 0110
| 0101
| 14
| 1110
| 1001
|-
| 7
| 0111
| 0100
| 15
| 1111
| 1000
|}
|}



Edição atual tal como às 21h48min de 17 de março de 2025

O código Gray é uma codificação na qual números adjacentes diferem de apenas um único bit. Desta forma ao fazer uma contagem em Gray, a cada incremento apenas um bit é modificado. Isso difere do que ocorre na contagem em binário, onde vários bits podem alterar com o incremento de um.

Por exemplo:

  • Em código binário sequencial o número adjacente a 0111 (7) é o 1000 (8), mudança em 4 bits.
  • Em código Gray seria: o número adjacente a 0100 (7) é o 1100 (8), mudança de apenas 1 bit.

Entre as aplicações do código Gray temos:

  • sistemas de controle de posição de eixos rotativos em máquinas
  • minimização de circuitos (Mapas de Karnaugh)
  • minimização e até correção de erros na transmissão digital (ex: QAM)


1 Tabela de códigos de 0 a 15

Octal Hexadecimal Decimal Binário Gray One Hot
00 0 0 0000 0000 0000.0000.0000.0001
01 1 1 0001 0001 0000.0000.0000.0010
02 2 2 0010 0011 0000.0000.0000.0100
03 3 3 0011 0010 0000.0000.0000.1000
04 4 4 0100 0110 0000.0000.0001.0000
05 5 5 0101 0111 0000.0000.0010.0000
06 6 6 0110 0101 0000.0000.0100.0000
07 7 7 0111 0100 0000.0000.1000.0000
10 8 8 1000 1100 0000.0001.0000.0000
11 9 9 1001 1101 0000.0010.0000.0000
12 A 10 1010 1111 0000.0100.0000.0000
13 B 11 1011 1110 0000.1000.0000.0000
14 C 12 1100 1010 0001.0000.0000.0000
15 D 13 1101 1011 0010.0000.0000.0000
16 E 14 1110 1001 0100.0000.0000.0000
17 F 15 1111 1000 1000.0000.0000.0000


Decimal Binário Gray Decimal Binário Gray
0 0000 0000 8 1000 1100
1 0001 0001 9 1001 1101
2 0010 0011 10 1010 1111
3 0011 0010 11 1011 1110
4 0100 0110 12 1100 1010
5 0101 0111 13 1101 1011
6 0110 0101 14 1110 1001
7 0111 0100 15 1111 1000

2 Conversão de Binário para Gray

Conversão de um número binário de N bits em um número Gray pode ser feita considerando o um número binário inicial bN1|bN2|...|b2|b1|b0, o número Gray correspondente gN1|gN2|...|g2|g1|g0 pode ser obtido através de:

para  i=N1,gN1=bN1

para i=[N2,...,0],gi=bibi+1

Por exemplo para N = 4:

g3=b3
g2=b2b3
g1=b1b2
g0=b0b1

3 Conversão de Gray para Binário

Conversão de um número Gray de N bits em um número binário pode ser feita considerando o um número Gray inicial gN1|gN2|...|g2|g1|g0, o número binário correspondente bN1|bN2|...|b2|b1|b0 pode ser obtido através de:

para  i=N1,bN1=gN1

para i=[N2,...,0],bi=gibi+1

Por exemplo para N = 4:

b3=g30
b2=g2b3
b1=g1b2
b0=g0b1

Ou expandindo:

b3=g30
b2=g2g3
b1=g1g2g3
b0=g0g1g2g3
b(3..0) <= g(3..0) xor '0' b(3..1)

4 Curiosidade