ForHosting KIT · Ferramentas para dev

Conversor decimal para ponto fixo

Transforme um decimal no inteiro guardado em formato Q.n de ponto fixo: 0,1 com 8 bits fracionários guarda 26, que na verdade vale 0,1015625, com erro de 0,0015625. Feito para firmware, DSP e FPGA. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Valor
0,1
Bits fracionários
8
Você obtém
Arredondamento
Nearest
Formato Q
Q.8
Escala
256
Resolução
0,00390625

Quem converte uma constante de projeto, um coeficiente de filtro ou uma leitura de sensor precisa do inteiro armazenado, do erro de reconstrução após o arredondamento e da resolução dois elevado a menos n — não de um dump hexadecimal de um float. Este conversor de decimal para ponto fixo aceita um valor decimal real e uma contagem n de bits fracionários, multiplica por dois elevado a n, encaixa em um inteiro com um modo de arredondamento documentado e devolve o código armazenado, o real reconstruído, o erro de arredondamento com sinal e a unidade no último lugar dessa grade Q.n.

O que o formato Q significa e como o inteiro armazenado é formado

O formato Q, muitas vezes escrito Q.n ou Qn, é a convenção usada em cabeçalhos da Texas Instruments, no ARM CMSIS-DSP e em inúmeras toolchains FPGA para um número binário de ponto fixo com n bits à direita do ponto binário implícito. O valor real representado por um inteiro armazenado I é I dividido por dois elevado a n, de modo que o espaçamento da grade — a resolução, ou unidade no último lugar desse formato — é exatamente dois elevado a menos n.

Codificar um decimal x significa, portanto, calcular x vezes dois elevado a n e arredondar para um inteiro; decodificar é uma única divisão pela mesma escala. Todo valor representável compartilha o mesmo passo absoluto, e por isso codecs de áudio, malhas de controle de motores e tabelas de consulta preferem o formato quando precisam de arredondamento determinístico e de multiplicações-acumulações inteiras baratas.

Frases de busca como conversor de decimal para ponto fixo, conversor de formato Q, conversor Q15 e converter float para Q31 descrevem exatamente este trabalho: pegar um decimal humano, escolher n e ler de volta o inteiro armazenado mais o quanto o arredondamento moveu o valor.

Uma verificação clássica é o decimal um décimo com oito bits fracionários: a escala é duzentos e cinquenta e seis, o arredondamento nearest armazena vinte e seis, o valor reconstruído é vinte e seis sobre duzentos e cinquenta e seis, e o erro de arredondamento com sinal é a diferença em relação a um décimo — exatamente o triplo que esta página existe para mostrar.

Onde um conversor de formato Q justifica o seu uso

Autores de firmware usam um conversor de decimal para ponto fixo quando colam um tap de filtro, um ganho PID ou uma conversão de unidades em um cabeçalho e precisam do inteiro exato que vai ocupar uma variável Q15 ou Q31. Bancadas FPGA e HDL precisam do mesmo número para que o estímulo do testbench coincida com o datapath RTL que nunca vê um float.

Ferramentas de jogo e áudio convertem amostras normalizadas e pesos de animação para uma grade fixa antes de empacotá-los em um asset binário, e querem o erro de arredondamento impresso ao lado do código para que um artista veja se oito bits fracionários bastam. Salas de aula que ensinam aritmética de computadores precisam de um oráculo determinístico que mostre resolução e erro juntos, em vez de um «multiplique por duzentos e cinquenta e seis e arredonde» no olho.

Constantes de firmware e taps DSP

Transforme um decimal de projeto no inteiro Q15 ou Q.8 que pertence a um cabeçalho e mantenha o erro de arredondamento ao lado do código armazenado para revisão.

Bancadas de teste FPGA e HDL

Gere o mesmo estímulo de ponto fixo que o RTL verá, com uma resolução explícita de dois elevado a menos n para que os scoreboards tolerem um ulp.

Conferências de aritmética em sala de aula

Mostre aos estudantes o inteiro armazenado, o real reconstruído e o erro com sinal para qualquer n, inclusive o clássico exemplo de um décimo, que não é exato em binário.

Qual é a resolução de um número Q.n?

A resolução é exatamente 2^-n: o passo entre dois inteiros armazenados vizinhos.

Por que um décimo não pode ser armazenado de forma exata?

0.1 não é um racional diádico. Com oito bits fracionários o inteiro armazenado mais próximo é 26, que se reconstrói como 26/256 = 0.1015625.

Como converto um decimal para Q15?

Escolha 15 bits fracionários. A ferramenta multiplica o decimal por dois elevado a 15, arredonda para um inteiro e mostra o código guardado, o valor que ele realmente representa e o erro de arredondamento, pronto para colar no firmware.

Quantos bits fracionários posso usar no máximo?

Até 52. A quantidade precisa ser um número inteiro de 0 a 52, e se o valor multiplicado por dois elevado a essa potência sair da faixa de inteiros seguros, a conversão é recusada em vez de perder os bits baixos em silêncio.

Qual modo de arredondamento devo escolher?

O padrão é o mais próximo, com empates afastando-se do zero. Também há truncar em direção ao zero, arredondar para baixo e arredondar para cima; escolha o mesmo que o seu firmware ou circuito usa, para que o inteiro guardado coincida.

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.

POSThttps://api.kit.forhosting.com/dev/decimal-to-fixed-point

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/dev/decimal-to-fixed-point \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"value":0.1,"fractional_bits":8}'
{
  "value": 0.1,
  "fractional_bits": 8
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.decimal_to_fixed_point",
  "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.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

max_fractional_bits52
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Firmware embarcado, núcleos DSP, datapaths FPGA e motores de jogo ainda guardam muitos sinais como inteiros de ponto fixo em formato Q, em vez de floats IEEE-754: um número escolhido de bits fica à direita de um ponto binário implícito, de modo que cada inteiro armazenado é múltiplo de uma resolução fixa.

O que o formato Q significa e como o inteiro armazenado é formado

Isso não é ponto flutuante IEEE-754: não há campo de expoente, nem um líder oculto, nem underflow gradual. Este endpoint implementa esse contrato e nada mais. Ele não emite macros C, não empacota uma palavra de máquina completa com uma largura de bits inteiros escolhida a menos que você interprete o inteiro armazenado, e não converte para padrões de bits IEEE-754. Essas são intenções de busca diferentes, atendidas por outras ferramentas.

Contrato de entrada, modos de arredondamento e campos da resposta

Campos ausentes, strings vazias, valores não finitos, um n não inteiro ou um n fora de zero a cinquenta e dois também falham, e essas falhas não são cobradas. Se o produto de value e dois elevado a n sair da faixa de inteiro seguro, a tarefa é rejeitada em vez de perder bits baixos em silêncio. Envie um corpo JSON com dois campos obrigatórios e um modo opcional. value é o decimal finito a codificar; pode chegar como número JSON ou como string numérica, e os aliases decimal e number são aceitos. fractional_bits é o inteiro n em Q.n, de zero a cinquenta e dois inclusive, para que dois elevado a n continue sendo um inteiro seguro exato de JavaScript; os aliases incluem frac_bits, n e q. rounding é opcional e o padrão é nearest, que significa metade afastando-se de zero — a convenção da maioria das notas de DSP, e não a mesma de JavaScript Math.round, que manda os empates rumo a mais infinito. Os outros modos documentados são toward_zero (truncar o produto escalado), floor (em direção a menos infinito) e ceil (em direção a mais infinito); qualquer outro token falha com invalid_input. Em caso de sucesso o corpo ecoa value e fractional_bits, nomeia o modo de arredondamento, informa q_format como Q.n e devolve scale (dois elevado a n), resolution (dois elevado a menos n), stored (o código inteiro), stored_hex (hex de magnitude com sinal), reconstructed (stored sobre scale), rounding_error (reconstructed menos o valor original), abs_error, um booleano exact quando o erro arredondado é zero, e uma string curta de fórmula. Combine a resposta com a sua própria verificação de largura de palavra se precisar saber se stored cabe em um registrador com sinal de dezesseis ou trinta e dois bits; este endpoint não assume uma largura total de bits, então a forma hex é magnitude com sinal, não complemento de dois de um recipiente oculto.

Onde um conversor de formato Q justifica o seu uso

Como a implementação é parse de nível A puro, cada chamada bem-sucedida custa o preço-base publicado US$ 0,002 sem tokens de modelo e sem rede de saída; a validação falha não consome saldo. Quando a intenção de busca for o padrão hex IEEE-754 de um float, use uma ferramenta de padrão de bits em ponto flutuante; quando a intenção for um inteiro Q.n com o seu erro e a sua resolução, este é o contrato.

Como converter um decimal em um inteiro de ponto fixo no formato Q?

Envie um value finito e um fractional_bits inteiro n de 0 a 52. A API devolve stored = round(value × 2^n), além de reconstructed, rounding_error e resolution 2^-n.

Qual modo de arredondamento deve ser usado?

nearest (o padrão) é metade afastando-se de zero, a escolha usual em DSP. toward_zero trunca, floor vai rumo a −∞ e ceil rumo a +∞. O modo escolhido é ecoado na resposta.

Quanto custa o conversor de decimal para ponto fixo?

A ferramenta do navegador é gratuita. Pedidos de API usam saldo KIT pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.

Ver a documentação completa do KIT →