Calculadora suma saturada de enteros
Sume dos enteros y mantenga el total dentro de un ancho de bits fijo: 100 + 50 en una palabra de 8 bits con signo da 127 en lugar de dar la vuelta a un negativo, y la suma exacta, 150, aparece al lado. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- A
- 100
- B
- 50
- Bits
- 8
- Resultado
- 127
- Min
- -128
- Max
- 127
- Suma exacta
- 150
La suma entera saturada acota la suma matemática de dos enteros a los valores extremos que aún caben en una palabra de ancho fijo elegido, en lugar de dar la vuelta como hace la aritmética modular y la mayoría de los tipos enteros de máquina. Los ingenieros que revisan núcleos DSP, fórmulas de daño en juegos, canales de color y contadores de seguridad necesitan ese comportamiento de acotación con un mínimo y un máximo exactos y un indicador saturado inequívoco. Los estudiantes que comparan el desbordamiento por envoltura con la saturación necesitan un oráculo determinista que nunca invente un resultado modular. Esta calculadora de suma saturada de enteros acepta los sumandos a y b, un ancho de bits de dos a sesenta y cuatro y un indicador opcional de signo, y devuelve el resultado acotado, la suma exacta sin acotar, el rango representable y si se produjo saturación por desbordamiento o subdesbordamiento.
Qué significa la suma saturada frente al desbordamiento por envoltura
La suma entera ordinaria de ancho fijo es modular: cuando la suma verdadera sale del intervalo representable, el resultado de máquina se envuelve reduciendo la suma módulo dos elevado al ancho, lo que puede saltar de un valor positivo grande a uno negativo grande o de justo por debajo de cero a un positivo grande.
La suma saturada adopta otra política que prefieren muchos conjuntos de instrucciones DSP, códecs multimedia y contadores de seguridad crítica: si la suma verdadera supera el máximo representable, el resultado es ese máximo; si queda por debajo del mínimo, el resultado es ese mínimo; en caso contrario el resultado coincide con la suma verdadera. No hay envoltura modular.
Para un ancho con signo de w bits el intervalo cerrado va desde menos dos elevado a w menos uno hasta dos elevado a w menos uno, menos uno: el rango clásico en complemento a dos de int8, int16 e int32. Para un ancho sin signo w el intervalo va de cero a dos elevado a w menos uno.
Esta calculadora implementa exactamente esa acotación: forma la suma entera exacta de a y b con aritmética BigInt, la compara con min y max del ancho y la signo elegidos, y emite el resultado acotado junto con un booleano saturated y un campo direction con none, overflow o underflow, para que quien invoque pueda registrar o ramificar sin recalcular las cotas por su cuenta.
Dónde resulta útil la suma saturada
Los desarrolladores embebidos y de DSP usan la suma saturada para reproducir el comportamiento al estilo ARM QADD, etapas de canalización multimedia y acumuladores de punto fijo sin levantar un emulador completo por una sola comprobación aritmética. Las herramientas de color y audio suelen saturar sumas de canal o de muestra a ocho o dieciséis bits al previsualizar modos de mezcla antes de comprometer código de sombreado.
Quienes enseñan la representación informática de enteros necesitan un contraste lado a lado entre envoltura modular y saturación con números reproducibles de int8 a int64. La validación fallida no consume saldo. Mantenga las peticiones pequeñas, fije result y saturated en las pruebas y obtendrá acotaciones reproducibles para deberes, oráculos de CI y trabajadores en el borde sin reinventar tablas de aritmética de ancho fijo.
Qué puede hacer con ella
Comprobaciones de firmware DSP y punto fijo
Verifique la suma saturada frente a cotas int8/int16/int32 al modelar núcleos al estilo QADD o acumuladores de punto fijo sin un emulador completo.
Acotación de recursos en juegos y simulaciones
Acote sumas de salud, daño o puntuación a un ancho de bits elegido para que el desbordamiento sature en el máximo en lugar de envolver a un valor negativo.
Preguntas frecuentes
¿En qué se diferencia la suma saturada de enteros del desbordamiento normal?
La suma de ancho fijo normal se envuelve (aritmética modular). La suma saturada acota la suma verdadera al mínimo o máximo representable del ancho y signo elegidos, y nunca se envuelve.
¿Qué significan saturated y direction?
saturated es true cuando el resultado se acotó. direction es overflow si la suma superó max, underflow si quedó por debajo de min, y none si no hizo falta acotar.
¿Pueden a o b quedar fuera del rango de la palabra?
Sí. Los operandos pueden ser enteros seguros cualesquiera; solo se acota la suma al min/max de la palabra. Eso encaja con el uso habitual de calculadoras y docencia al explorar entradas fuera de rango.
¿Qué anchos de bits admite?
Cualquier ancho entre 2 y 64 bits. Por defecto la palabra lleva signo, por ejemplo de −128 a 127 en 8 bits; sin signo, el intervalo empieza en cero y llega a dos elevado al ancho, menos uno.
¿Por qué acotar en lugar de dejar que la suma dé la vuelta?
Porque un resultado que da la vuelta puede saltar de un valor positivo grande a uno negativo grande, una sorpresa desagradable en audio, canales de color o contadores de seguridad. Acotar deja el resultado en el límite más cercano, como hacen muchos juegos de instrucciones de DSP y códecs multimedia.
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/saturating-add \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":100,"b":50,"bits":8}'const res = await fetch("https://api.kit.forhosting.com/dev/saturating-add", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 100,
"b": 50,
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/saturating-add",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 100,
"b": 50,
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/saturating-add", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":100,"b":50,"bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":100,"b":50,"bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/saturating-add", 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
{
"a": 100,
"b": 50,
"bits": 8
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.saturating_add",
"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.
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
Contrato de entrada, forma de la respuesta y comportamiento de error
El campo opcional signed vale true por defecto para una palabra con signo en complemento a dos; ponga signed en false para un rango sin signo que empieza en cero. Se aceptan por comodidad cadenas de tipo booleano como true, false, yes, no, signed y unsigned. Envíe por POST un cuerpo JSON con los campos obligatorios a y b como enteros finitos (números JSON o cadenas de dígitos con signo inicial opcional) cuyo valor absoluto permanezca dentro de Number.MAX_SAFE_INTEGER, y bits como entero de dos a sesenta y cuatro. Campos ausentes, no enteros, bits fuera de dos a sesenta y cuatro y valores no booleanos de signed fallan con invalid_input indicando el problema; esos fallos no se facturan. En caso de éxito el cuerpo repite a, b, bits y signed; informa min y max de la palabra; informa sum_exact como la suma matemática sin acotar; informa result como el valor acotado; pone saturated en true cuando hubo acotación; y fija direction en none, overflow o underflow. Los valores que superan los enteros seguros de JavaScript en los extremos del rango o en la suma exacta se emiten como cadenas decimales para que el JSON siga siendo exacto. Ejemplo: a igual a cien, b igual a cincuenta, bits igual a ocho, signed true produce min menos ciento veintiocho, max ciento veintisiete, sum_exact ciento cincuenta, result ciento veintisiete, saturated true y direction overflow: el caso clásico de suma saturada int8.
Dónde aporta valor una API de suma saturada de enteros
Autores de juegos y simulaciones acotan salud, daño y contadores de recursos para que el desbordamiento no envuelva una barra casi llena en un valor negativo o casi nulo; una calculadora pública y una API hacen revisables esas reglas de acotación en la documentación de diseño. Como la implementación es parse de nivel A puro, cada llamada con éxito cuesta el precio base publicado $0.002 sin tokens de modelo y sin red saliente.
Casos de integración
Demostraciones de aula: desbordamiento frente a saturación
Muestre a los alumnos la diferencia entre envoltura modular y acotación saturada con min, max, sum_exact y result deterministas para cualquier ancho 2–64.
Preguntas técnicas
¿Qué anchos de bits y modos con signo se admiten?
bits debe ser un entero de 2 a 64. signed vale true por defecto (rango en complemento a dos). Ponga signed false para el rango sin signo [0, 2^bits−1].
¿Cuánto cuesta la calculadora de suma saturada de enteros?
La herramienta del navegador es gratuita. Las peticiones API usan saldo KIT prepago a $0.002 por llamada con éxito; la entrada inválida no se factura.