Conversor decimal a coma fija
Convierta un decimal en el entero que se guarda en formato Q.n de coma fija: 0,1 con 8 bits fraccionarios guarda 26, que en realidad vale 0,1015625, con un error de 0,0015625. Pensado para firmware, DSP y FPGA. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Valor
- 0,1
- Bits fraccionarios
- 8
- Redondeo
- Nearest
- Formato Q
- Q.8
- Escala
- 256
- Resolución
- 0,00390625
Quien convierte una constante de diseño, un coeficiente de filtro o una lectura de sensor necesita el entero almacenado, el error de reconstrucción tras el redondeo y la resolución dos a la menos n — no un volcado hexadecimal de un flotante. Este conversor de decimal a coma fija acepta un valor decimal real y un recuento n de bits fraccionarios, multiplica por dos a la n, encaja en un entero con un modo de redondeo documentado y devuelve el código almacenado, el real reconstruido, el error de redondeo con signo y la unidad en el último lugar de esa malla Q.n.
Qué significa el formato Q y cómo se forma el entero almacenado
El formato Q, escrito a menudo Q.n o Qn, es el convenio que usan las cabeceras de Texas Instruments, ARM CMSIS-DSP y un sinnúmero de cadenas de herramientas FPGA para un número binario de coma fija con n bits a la derecha del punto binario implícito. El valor real que representa un entero almacenado I es I dividido por dos a la n, de modo que el paso de la malla —la resolución, o unidad en el último lugar de ese formato— es exactamente dos a la menos n.
Codificar un decimal x consiste por tanto en calcular x por dos a la n y redondear a un entero; decodificar es una sola división por la misma escala. Todos los valores representables comparten el mismo paso absoluto, y por eso los códecs de audio, los lazos de control de motores y las tablas de consulta lo prefieren cuando necesitan redondeo determinista y multiplicaciones-acumulaciones enteras baratas.
Frases de búsqueda como conversor de decimal a coma fija, conversor de formato Q, conversor Q15 y convertir flotante a Q31 describen exactamente este trabajo: tomar un decimal humano, elegir n y leer el entero almacenado más cuánto movió el redondeo el valor. Esas son intenciones de búsqueda distintas, cubiertas por otras herramientas.
Una comprobación clásica es el decimal un décimo con ocho bits fraccionarios: la escala es doscientos cincuenta y seis, el redondeo nearest almacena veintiséis, el valor reconstruido es veintiséis entre doscientos cincuenta y seis, y el error de redondeo con signo es la diferencia respecto de un décimo — exactamente el triple que esta página está hecha para mostrar.
Dónde un conversor de formato Q aporta valor
Los autores de firmware usan un conversor de decimal a coma fija cuando pegan un tap de filtro, una ganancia PID o una conversión de unidades en una cabecera y necesitan el entero exacto que ocupará una variable Q15 o Q31. Los bancos FPGA y HDL necesitan el mismo número para que el estímulo del testbench coincida con el datapath RTL que nunca ve un flotante.
Las herramientas de juego y audio convierten muestras normalizadas y pesos de animación a una malla fija antes de empaquetarlos en un activo binario, y quieren el error de redondeo impreso junto al código para que un artista vea si ocho bits fraccionarios bastan. Las aulas que enseñan aritmética de computadores necesitan un oráculo determinista que muestre resolución y error juntos, en lugar de un «multiplique por doscientos cincuenta y seis y redondee» a ojo.
Qué puede hacer con ella
Constantes de firmware y taps DSP
Convierta un decimal de diseño en el entero Q15 o Q.8 que corresponde en una cabecera, y conserve el error de redondeo junto al código almacenado para revisión.
Bancos de prueba FPGA y HDL
Genere el mismo estímulo de coma fija que verá el RTL, con una resolución explícita de dos a la menos n para que los scoreboards toleren un ulp.
Comprobaciones de aritmética en el aula
Muestre al alumnado el entero almacenado, el real reconstruido y el error con signo para cualquier n, incluido el clásico ejemplo de un décimo, que no es exacto en binario.
Preguntas frecuentes
¿Cuál es la resolución de un número Q.n?
La resolución es exactamente 2^-n: el paso entre dos enteros almacenados consecutivos.
¿Qué modo de redondeo conviene usar?
El modo elegido se repite en la respuesta.
¿Por qué un décimo no se puede almacenar de forma exacta?
0.1 no es un racional diádico. Con ocho bits fraccionarios el entero almacenado más cercano es 26, que se reconstruye como 26/256 = 0.1015625.
¿Cómo convierto un decimal a Q15?
Elija 15 bits fraccionarios. La herramienta multiplica su decimal por dos elevado a 15, lo redondea a un entero y muestra el código guardado, el valor que representa de verdad y el error de redondeo, listo para pegar en el firmware.
¿Cuántos bits fraccionarios puedo usar como máximo?
Hasta 52. El número debe ser entero, de 0 a 52, y si el valor multiplicado por dos elevado a esa potencia sale del rango de enteros seguros, la conversión se rechaza en lugar de perder en silencio los bits bajos.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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}'const res = await fetch("https://api.kit.forhosting.com/dev/decimal-to-fixed-point", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 0.1,
"fractional_bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/decimal-to-fixed-point",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 0.1,
"fractional_bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/decimal-to-fixed-point", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":0.1,"fractional_bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":0.1,"fractional_bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/decimal-to-fixed-point", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"value": 0.1,
"fractional_bits": 8
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.decimal_to_fixed_point",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_fractional_bits | 52 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
El firmware embebido, los núcleos DSP, los datapaths FPGA y los motores de juego siguen guardando muchas señales como enteros de coma fija en formato Q, en lugar de flotantes IEEE-754: un número elegido de bits queda a la derecha de un punto binario implícito, de modo que cada entero almacenado es múltiplo de una resolución fija.
Qué significa el formato Q y cómo se forma el entero almacenado
Esto no es coma flotante IEEE-754: no hay campo de exponente, ni uno líder oculto, ni subdesbordamiento gradual. Este endpoint implementa ese contrato y nada más. No emite macros C, no empaqueta una palabra de máquina completa con un ancho de bits enteros elegido salvo que usted interprete el entero almacenado, y no convierte a patrones de bits IEEE-754.
Contrato de entrada, modos de redondeo y campos de la respuesta
Los campos ausentes, las cadenas vacías, los valores no finitos, un n no entero o un n fuera de cero a cincuenta y dos también fallan, y esos fallos no se facturan. Si el producto de value y dos a la n sale del rango de entero seguro, la tarea se rechaza en lugar de perder bits bajos en silencio. Envíe un cuerpo JSON con dos campos obligatorios y un modo opcional. value es el decimal finito a codificar; puede llegar como número JSON o como cadena numérica, y se aceptan los alias decimal y number. fractional_bits es el entero n en Q.n, de cero a cincuenta y dos inclusive, para que dos a la n siga siendo un entero seguro exacto de JavaScript; los alias incluyen frac_bits, n y q. rounding es opcional y por defecto es nearest, que significa mitad alejándose de cero — el convenio que usan la mayoría de las notas DSP, y no el mismo que JavaScript Math.round, que envía los empates hacia más infinito. Los otros modos documentados son toward_zero (truncar el producto escalado), floor (hacia menos infinito) y ceil (hacia más infinito); cualquier otro token falla con invalid_input. En caso de éxito el cuerpo hace eco de value y fractional_bits, nombra el modo de redondeo, informa q_format como Q.n y devuelve scale (dos a la n), resolution (dos a la menos n), stored (el código entero), stored_hex (hex de magnitud con signo), reconstructed (stored entre scale), rounding_error (reconstructed menos el valor original), abs_error, un booleano exact cuando el error redondeado es cero, y una cadena de fórmula breve. Combine la respuesta con su propia comprobación de ancho de palabra si necesita saber si stored cabe en un registro con signo de dieciséis o treinta y dos bits; este endpoint no asume un ancho total de bits, así que la forma hex es magnitud con signo, no complemento a dos de un contenedor oculto.
Dónde un conversor de formato Q aporta valor
Como la implementación es parse de nivel A puro, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo ni red de salida; la validación fallida no consume saldo. Cuando la intención de búsqueda sea el patrón hex IEEE-754 de un flotante, use una herramienta de patrón de bits en coma flotante; cuando la intención sea un entero Q.n con su error y su resolución, este es el contrato.
Preguntas técnicas
¿Cómo se convierte un decimal a un entero de coma fija en formato Q?
Envíe un value finito y un fractional_bits entero n de 0 a 52. La API devuelve stored = round(value × 2^n), más reconstructed, rounding_error y resolution 2^-n.
¿Cuánto cuesta el conversor de decimal a coma fija?
La herramienta del navegador es gratuita. Las peticiones API usan saldo KIT de prepago a $0.002 por llamada exitosa; la entrada inválida no se factura.