Mudanças entre as edições de "Código Gray"
(15 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
− | + | 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) | ||
− | |||
− | + | ==Tabela de códigos de 0 a 15== | |
− | + | {| class="wikitable sortable" style="text-align:center; background-color:#F8F9FA; color:#202122;" | |
− | + | |- style="font-weight:bold; background-color:#EAECF0;" | |
− | : | + | ! style="vertical-align:middle;" | Octal |
− | : | + | ! style="vertical-align:middle;" | Hexadecimal |
− | + | ! Decimal | |
− | = | + | ! style="vertical-align:middle;" | Binário |
− | + | ! style="vertical-align:middle;" | Gray | |
− | ! | + | ! style="vertical-align:middle;" | One Hot |
− | ! | ||
− | ! | ||
|- | |- | ||
− | |0||0000||0000 | + | | style="vertical-align:middle;" | 00 |
+ | | style="vertical-align:middle;" | 0 | ||
+ | | 0 | ||
+ | | style="vertical-align:middle;" | 0000 | ||
+ | | style="vertical-align:middle;" | 0000 | ||
+ | | style="vertical-align:middle;" | 0000.0000.0000.0001 | ||
|- | |- | ||
− | |1||0001||0001 | + | | style="vertical-align:middle;" | 01 |
+ | | style="vertical-align:middle;" | 1 | ||
+ | | 1 | ||
+ | | style="vertical-align:middle;" | 0001 | ||
+ | | style="vertical-align:middle;" | 0001 | ||
+ | | style="vertical-align:middle;" | 0000.0000.0000.0010 | ||
|- | |- | ||
− | |2||0010||0011 | + | | style="vertical-align:middle;" | 02 |
+ | | style="vertical-align:middle;" | 2 | ||
+ | | 2 | ||
+ | | style="vertical-align:middle;" | 0010 | ||
+ | | style="vertical-align:middle;" | 0011 | ||
+ | | style="vertical-align:middle;" | 0000.0000.0000.0100 | ||
|- | |- | ||
− | |3||0011||0010 | + | | style="vertical-align:middle;" | 03 |
+ | | style="vertical-align:middle;" | 3 | ||
+ | | 3 | ||
+ | | style="vertical-align:middle;" | 0011 | ||
+ | | style="vertical-align:middle;" | 0010 | ||
+ | | style="vertical-align:middle;" | 0000.0000.0000.1000 | ||
|- | |- | ||
− | |4||0100||0110 | + | | style="vertical-align:middle;" | 04 |
+ | | style="vertical-align:middle;" | 4 | ||
+ | | 4 | ||
+ | | style="vertical-align:middle;" | 0100 | ||
+ | | style="vertical-align:middle;" | 0110 | ||
+ | | style="vertical-align:middle;" | 0000.0000.0001.0000 | ||
|- | |- | ||
− | |5||0101||0111 | + | | style="vertical-align:middle;" | 05 |
+ | | style="vertical-align:middle;" | 5 | ||
+ | | 5 | ||
+ | | style="vertical-align:middle;" | 0101 | ||
+ | | style="vertical-align:middle;" | 0111 | ||
+ | | style="vertical-align:middle;" | 0000.0000.0010.0000 | ||
|- | |- | ||
− | |6||0110||0101 | + | | style="vertical-align:middle;" | 06 |
+ | | style="vertical-align:middle;" | 6 | ||
+ | | 6 | ||
+ | | style="vertical-align:middle;" | 0110 | ||
+ | | style="vertical-align:middle;" | 0101 | ||
+ | | style="vertical-align:middle;" | 0000.0000.0100.0000 | ||
|- | |- | ||
− | |7||0111||0100 | + | | style="vertical-align:middle;" | 07 |
+ | | style="vertical-align:middle;" | 7 | ||
+ | | 7 | ||
+ | | style="vertical-align:middle;" | 0111 | ||
+ | | style="vertical-align:middle;" | 0100 | ||
+ | | style="vertical-align:middle;" | 0000.0000.1000.0000 | ||
|- | |- | ||
− | |8||1000||1100 | + | | style="vertical-align:middle;" | 10 |
+ | | style="vertical-align:middle;" | 8 | ||
+ | | 8 | ||
+ | | style="vertical-align:middle;" | 1000 | ||
+ | | style="vertical-align:middle;" | 1100 | ||
+ | | style="vertical-align:middle;" | 0000.0001.0000.0000 | ||
|- | |- | ||
− | |9||1001||1101 | + | | style="vertical-align:middle;" | 11 |
+ | | style="vertical-align:middle;" | 9 | ||
+ | | 9 | ||
+ | | style="vertical-align:middle;" | 1001 | ||
+ | | style="vertical-align:middle;" | 1101 | ||
+ | | style="vertical-align:middle;" | 0000.0010.0000.0000 | ||
|- | |- | ||
− | |10||1010||1111 | + | | style="vertical-align:middle;" | 12 |
+ | | style="vertical-align:middle;" | A | ||
+ | | 10 | ||
+ | | style="vertical-align:middle;" | 1010 | ||
+ | | style="vertical-align:middle;" | 1111 | ||
+ | | style="vertical-align:middle;" | 0000.0100.0000.0000 | ||
|- | |- | ||
− | |11||1011||1110 | + | | style="vertical-align:middle;" | 13 |
+ | | style="vertical-align:middle;" | B | ||
+ | | 11 | ||
+ | | style="vertical-align:middle;" | 1011 | ||
+ | | style="vertical-align:middle;" | 1110 | ||
+ | | style="vertical-align:middle;" | 0000.1000.0000.0000 | ||
|- | |- | ||
− | |12||1100||1010 | + | | style="vertical-align:middle;" | 14 |
+ | | style="vertical-align:middle;" | C | ||
+ | | 12 | ||
+ | | style="vertical-align:middle;" | 1100 | ||
+ | | style="vertical-align:middle;" | 1010 | ||
+ | | style="vertical-align:middle;" | 0001.0000.0000.0000 | ||
|- | |- | ||
− | |13||1101||1011 | + | | style="vertical-align:middle;" | 15 |
+ | | style="vertical-align:middle;" | D | ||
+ | | 13 | ||
+ | | style="vertical-align:middle;" | 1101 | ||
+ | | style="vertical-align:middle;" | 1011 | ||
+ | | style="vertical-align:middle;" | 0010.0000.0000.0000 | ||
|- | |- | ||
− | |14||1110||1001 | + | | style="vertical-align:middle;" | 16 |
+ | | style="vertical-align:middle;" | E | ||
+ | | 14 | ||
+ | | style="vertical-align:middle;" | 1110 | ||
+ | | style="vertical-align:middle;" | 1001 | ||
+ | | style="vertical-align:middle;" | 0100.0000.0000.0000 | ||
|- | |- | ||
− | |15||1111||1000 | + | | style="vertical-align:middle;" | 17 |
+ | | style="vertical-align:middle;" | F | ||
+ | | 15 | ||
+ | | style="vertical-align:middle;" | 1111 | ||
+ | | style="vertical-align:middle;" | 1000 | ||
+ | | style="vertical-align:middle;" | 1000.0000.0000.0000 | ||
|} | |} | ||
+ | |||
+ | ==Conversão de Binário para Gray== | ||
+ | Conversão de um número binário de <math> N </math> bits em um número Gray pode ser feita considerando o um número binário inicial | ||
+ | <math>b_{N-1} | b_{N-2} | ... | b_2 | b_1 | b_0 </math>, o número Gray correspondente <math>g_{N-1} | g_{N-2} | ... | g_2 | g_1 | g_0 </math> pode ser obtido através de: | ||
+ | |||
+ | para <math>\ i = N-1, g_{N-1} = b_{N-1} </math> | ||
+ | |||
+ | para <math> i = [N-2, ..., 0], g_{i} = b_{i+1} \oplus b_{i} </math> | ||
+ | |||
+ | Por exemplo para N = 4: | ||
+ | :<math> g_{3} = b_{3} \oplus 0 </math> | ||
+ | :<math> g_{2} = b_{2} \oplus b_{3} </math> | ||
+ | :<math> g_{1} = b_{1} \oplus b_{2} </math> | ||
+ | :<math> g_{0} = b_{0} \oplus b_{1} </math> | ||
+ | |||
+ | ==Conversão de Gray para Binário== | ||
+ | Conversão de um número Gray de <math> N </math> bits em um número binário pode ser feita considerando o um número Gray inicial | ||
+ | <math>g_{N-1} | g_{N-2} | ... | g_2 | g_1 | g_0 </math>, o número binário correspondente <math>b_{N-1} | b_{N-2} | ... | b_2 | b_1 | b_0 </math> pode ser obtido através de: | ||
+ | |||
+ | para <math>\ i = N-1, b_{N-1} = g_{N-1} </math> | ||
+ | |||
+ | para <math> i = [N-2, ..., 0], b_{i} = g_{i} \oplus b_{i+1} </math> | ||
+ | |||
+ | Por exemplo para N = 4: | ||
+ | :<math> b_{3} = g_{3} \oplus 0 </math> | ||
+ | :<math> b_{2} = g_{2} \oplus b_{3} </math> | ||
+ | :<math> b_{1} = g_{1} \oplus b_{2} </math> | ||
+ | :<math> b_{0} = g_{0} \oplus b_{1} </math> | ||
+ | |||
+ | Ou expandindo: | ||
+ | :<math> b_{3} = g_{3} \oplus 0 </math> | ||
+ | :<math> b_{2} = g_{2} \oplus g_{3} </math> | ||
+ | :<math> b_{1} = g_{1} \oplus g_{2} \oplus g_{3} </math> | ||
+ | :<math> b_{0} = g_{0} \oplus g_{1} \oplus g_{2} \oplus g_{3} </math> | ||
+ | |||
+ | ==Curiosidade== | ||
+ | *[https://patentimages.storage.googleapis.com/a3/d7/f2/0343f5f2c0cf50/US2632058.pdf PULSE CODE COMMUNICATION Patente US2632058] Depositante: Bell Labs, Inventor: Frank Gray. Essa patente descreve o código Gray. | ||
+ | *[https://en.wikipedia.org/wiki/Gray_code História e usos do código Gray] [https://en-m-wikipedia-org.translate.goog/wiki/Gray_code?_x_tr_sl=auto&_x_tr_tl=pt&_x_tr_hl=pt-BR&_x_tr_pto=wapp] |
Edição das 13h48min de 3 de maio de 2023
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)
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 |
Conversão de Binário para Gray
Conversão de um número binário de bits em um número Gray pode ser feita considerando o um número binário inicial , o número Gray correspondente pode ser obtido através de:
para
para
Por exemplo para N = 4:
Conversão de Gray para Binário
Conversão de um número Gray de bits em um número binário pode ser feita considerando o um número Gray inicial , o número binário correspondente pode ser obtido através de:
para
para
Por exemplo para N = 4:
Ou expandindo:
Curiosidade
- PULSE CODE COMMUNICATION Patente US2632058 Depositante: Bell Labs, Inventor: Frank Gray. Essa patente descreve o código Gray.
- História e usos do código Gray [1]