Decodificador de código Gray
Cole uma leitura em código Gray e veja o número que ela representa: 0111 vira o binário 0101, ou seja, 5. Os zeros à esquerda são mantidos, o que ajuda a comparar leituras de largura fixa de um encoder. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- 0111
- Código Gray
- 0111
- Binário
- 0101
- Inteiro
- 5
Um decodificador de código Gray transforma uma palavra Gray binária refletida no inteiro não negativo comum que ela representa. Esta ferramenta aceita uma sequência formada apenas por zeros e uns, reconstrói a forma binária padrão e retorna o inteiro exato com as duas sequências para facilitar a conferência. Ela ajuda você a ler posições de encoders rotativos, validar exercícios de lógica digital, testar tabelas de firmware e estudar como transições Gray de um bit voltam à contagem normal.
O que um decodificador de código Gray calcula
O código Gray binário refletido identifica inteiros não negativos consecutivos de forma que valores adjacentes difiram em exatamente um bit. Essa transição única é útil em dispositivos nos quais vários sinais elétricos não conseguem mudar exatamente ao mesmo tempo. Uma palavra Gray não deve ser lida diretamente com os pesos posicionais do binário comum.
Para decodificá-la, o bit Gray mais significativo é copiado como primeiro bit binário. Cada bit binário seguinte é o OU exclusivo entre o bit binário anterior e o bit Gray atual. De modo equivalente, cada posição binária representa a paridade do prefixo Gray encerrado nessa posição.
A capacidade aplica esse XOR cumulativo da esquerda para a direita, monta a sequência binária padrão e depois a avalia como inteiro não negativo. Por exemplo, o código Gray 0111 vira o binário 0101 e, portanto, o inteiro 5. Os zeros à esquerda são mantidos nas sequências retornadas, o que simplifica a comparação de leituras de hardware com largura fixa.
A implementação cobre a variante binária refletida normalmente usada em encoders e lógica digital.
Entrada válida e saída exata
Envie a palavra Gray no campo text como uma sequência não vazia que contenha somente 0 e 1. Espaços, separadores, o prefixo 0b, outros algarismos decimais, sinais e texto explicativo não são permitidos. A validação rigorosa impede que um caractere acidental altere silenciosamente uma posição de hardware.
O contrato atual aceita até 53 bits para produzir um inteiro exato. Gray 0 retorna binário 0 e inteiro 0; Gray 1 retorna binário 1 e inteiro 1. Entradas idênticas sempre produzem objetos idênticos, pois não há rede, aleatoriedade, estado armazenado nem relógio.
Uso em hardware, ensino e testes
Use o formulário do navegador quando você precisar inspecionar rapidamente uma leitura Gray, demonstrar XOR cumulativo em uma aula ou conferir um cálculo manual sem criar um programa descartável. Em encoders rotativos ou lineares, mantenha a leitura original com largura fixa e compare o campo binary com a ordem de bits documentada pelo dispositivo, pois a sequência é interpretada com o bit mais significativo primeiro. Em testes automatizados, valide os três campos quando a largura importar ou somente integer quando bastar a posição.
Inclua casos com todos os bits zerados, um único um, zeros à esquerda, o maior valor previsto e sequências malformadas. O decodificador não corrige fiação invertida, não infere a ordem, não remove prefixos nem adivinha se uma sequência é Gray ou binária comum. O contrato é intencionalmente preciso: validar, decodificar exatamente e retornar um resultado estável em navegador, servidor e integração contínua.
Casos de uso
Decodificar a posição de um encoder
Converta uma leitura Gray de largura fixa de um encoder rotativo ou linear na posição não negativa usada pela lógica da sua aplicação.
Conferir exercícios de lógica digital
Exiba a palavra binária reconstruída e o inteiro para verificar cada etapa do cálculo de decodificação por XOR cumulativo.
Perguntas frequentes
Qual tipo de código Gray é decodificado?
A ferramenta decodifica o código Gray binário refletido padrão com XOR cumulativo do bit mais significativo ao menos significativo.
Qual entrada é aceita?
Espaços, prefixos, sinais e outros algarismos são inválidos.
Por que a entrada é limitada a 53 bits?
Uma entrada maior pode exceder o intervalo seguro e é rejeitada para evitar arredondamento silencioso.
Como converto código Gray para binário à mão?
Copie o primeiro bit como está. Para cada bit seguinte, compare o bit Gray com o último bit binário escrito: anote 1 se forem diferentes e 0 se forem iguais. Assim 0111 vira 0101.
Por que encoders rotativos usam código Gray?
Porque posições vizinhas diferem em um único bit, o que importa em aparelhos em que vários sinais elétricos não mudam garantidamente no mesmo instante. Na decodificação, cada leitura volta a ser uma posição numérica comum.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/numth/gray-code-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"0111"}'const res = await fetch("https://api.kit.forhosting.com/numth/gray-code-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "0111"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/gray-code-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "0111"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/gray-code-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"0111"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"0111"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/gray-code-decode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "0111"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.gray_code_decode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_chars | 53 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Caracteres inválidos são rejeitados com clareza, e toda solicitação válida usa o mesmo algoritmo determinístico no navegador e na API.
Entrada válida e saída exata
Os aliases gray, gray_code e bits também são aceitos quando o seu cliente já utiliza um desses nomes. Números JavaScript e JSON só representam inteiros com precisão dentro do intervalo seguro; por isso, um resultado superior é rejeitado em vez de arredondado. Uma resposta correta contém gray_code com a largura enviada, binary com a palavra binária reconstruída e integer com o número JSON não negativo. Uma entrada inválida gera invalid_input sem resultado parcial enganoso.
Uso em hardware, ensino e testes
Use a API quando ferramentas de firmware, bancadas de teste, plataformas educacionais ou serviços de importação precisarem repetir a mesma operação estável. Cada item bem-sucedido pela API custa US$ 0,002; a execução no navegador atende às conferências interativas.
Casos de integração
Criar fixtures de teste determinísticos
Gere resultados estáveis de Gray para inteiro em tabelas de firmware, simuladores, analisadores de dispositivos e asserções de integração contínua.
Perguntas técnicas
Os zeros à esquerda são preservados?
Sim. Os campos gray_code e binary preservam a largura enviada, enquanto integer retorna o valor numérico correspondente.
Quanto custa a API?
Cada item bem-sucedido pela API custa US$ 0,002. A execução interativa no navegador está disponível para conferências rápidas.