Complemento a dos
En 8 bits, −5 se convierte en 11111011 y +5 en 00000101. Escriba un entero con signo y un ancho de palabra de 2 a 64 bits y obtenga su complemento a dos exacto; si no cabe, se rechaza en vez de darle la vuelta. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Valor
- -5
- Bits
- 8
- Binario
- 11111011
- Sin signo
- 251
- Min
- -128
- Max
- 127
El complemento a dos es la representación que los procesadores actuales emplean para enteros con signo: una cadena de bits de ancho fijo cuyo bit más alto es el signo y cuyos bits restantes completan una codificación modular del valor. Esta calculadora de complemento a dos acepta un entero con signo y un ancho de bits, y devuelve la palabra binaria exacta para ese ancho. Los valores no negativos se convierten en los bits de magnitud habituales, rellenados con ceros a la izquierda. Los valores negativos se convierten en el residuo del entero módulo dos elevado al ancho, que es la construcción clásica de invertir y sumar uno que se enseña en todo curso de organización de computadores.
Qué significa el complemento a dos y cómo se producen los bits
El complemento a dos es la representación que casi cada CPU usa para enteros con signo. Para una palabra de ancho w bits el rango representable es el intervalo cerrado que va desde menos dos elevado a w menos uno hasta dos elevado a w menos uno, menos uno. El bit más significativo es el bit de signo: cero significa un valor no negativo guardado como el binario sin signo ordinario de esa magnitud, rellenado a la izquierda con ceros hasta exactamente w caracteres.
Un uno en el bit de signo significa un valor negativo. Codificar un entero negativo n es lo mismo que tomar el residuo matemático de n módulo dos elevado a w: invertir cada bit de la magnitud positiva y sumar uno, y conservar exactamente w bits. Esa visión modular explica por qué restar uno de cero produce una cadena de unos, que se decodifica como menos uno, y por qué el valor más negativo en w bits es un uno seguido de w menos uno ceros.
Esta calculadora aplica esa identidad con aritmética modular BigInt para que cada bit sea exacto en anchos de dos a sesenta y cuatro. No envuelve valores que desbordan como haría un registro de hardware: si el entero con signo no puede vivir en el ancho elegido, la petición falla en lugar de producir en silencio una palabra ajena a otro entero.
Así, el alumnado puede comprobar deberes frente a una definición que coincide con manuales, y la automatización puede confiar en que un resultado de éxito es una codificación legal para el ancho declarado. Cinco positivo en ocho bits es 00000101; cinco negativo en ocho bits es 11111011; cero es una cadena de ceros; menos uno es una cadena de unos. Esos cuatro hitos bastan para verificar cualquier ancho posterior con la misma regla modular.
Dónde un codificador de complemento a dos justifica su uso
Las aulas emplean una calculadora de complemento a dos para que el alumnado convierta valores con signo de los deberes a palabras de ocho y dieciséis bits sin invertir a mano un bit de signo y olvidar el paso de sumar uno que distingue el complemento a dos del complemento a uno.
Los generadores de examen necesitan un oráculo determinista que rechace ciento veintiocho en ocho bits como desbordamiento en lugar de envolverlo a menos ciento veintiocho, porque el envoltorio es un comportamiento de hardware que el estudiante debe reconocer como distinto de una codificación legal del entero original. Las revisiones de firmware embebido suelen exigir una comprobación rápida de que una constante documentada cabe de verdad en el ancho de campo anunciado antes de empaquetarla en un registro, una palabra de protocolo o un bitfield de una hoja de datos.
Quienes diseñan protocolos comparan la palabra devuelta con un volcado de paquete cuando un campo con signo se transmite bit más significativo primero. Mantenga las peticiones pequeñas, afirme el campo binary en las pruebas y obtendrá palabras de complemento a dos reproducibles para deberes, laboratorios y workers de borde sin montar una cadena de ensamblador propia.
Qué puede hacer con ella
Comprobaciones de aula y deberes
Convierta valores con signo de la hoja de ejercicios a palabras de complemento a dos de ocho o dieciséis bits y confirme el resultado de invertir y sumar uno sin una tabla de bits dibujada a mano.
Revisiones de firmware y protocolos
Compruebe que una constante con signo documentada cabe de verdad en el ancho de campo anunciado antes de empaquetarla en un registro o en un formato de cable.
Preguntas frecuentes
¿Qué ocurre si el entero no cabe en el ancho de bits?
El extremo no envuelve. En ocho bits el rango legal es −128 a 127, de modo que 128 es un error y no el patrón de bits de −128.
¿Cómo se codifica un valor negativo?
Como el residuo no negativo del entero módulo 2^w, que equivale a invertir los bits de magnitud y sumar uno. Menos cinco en ocho bits es 11111011.
¿Qué anchos de bits se admiten?
Cualquier ancho entero de 2 a 64. Los anchos habituales de docencia y firmware son 8, 16, 32 y 64, siempre que el valor permanezca en el rango de enteros seguros de JavaScript.
¿Cómo convierto un entero con signo a complemento a dos?
Si es positivo, se escribe en binario y se rellena con ceros a la izquierda hasta el ancho elegido. Si es negativo, se invierten los bits de su valor positivo y se suma uno: así −5 queda en 11111011 con 8 bits.
¿En qué se diferencia el complemento a uno del complemento a dos?
El complemento a uno solo invierte cada bit del valor positivo; el complemento a dos invierte y después suma uno. Ese paso extra es el que convierte −5 en 11111011 con 8 bits y hace que −1 sea una fila de unos.
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/math/twos-complement \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":-5,"bits":8}'const res = await fetch("https://api.kit.forhosting.com/math/twos-complement", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": -5,
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/twos-complement",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": -5,
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/twos-complement", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":-5,"bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":-5,"bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/twos-complement", 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": -5,
"bits": 8
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.twos_complement",
"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
min_bits | 2 |
max_bits | 64 |
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
Si el entero no cabe en el rango con signo del ancho elegido, la tarea falla con invalid_input en lugar de envolver en silencio. Las llamadas API correctas cuestan $0.002; la entrada inválida no se cobra.
Contrato de entrada, rango legal y cómo se informa el desbordamiento
El campo value es el entero con signo a codificar. Se rechazan fracciones, notación científica, cadenas vacías, Infinity y NaN, para que una celda de hoja de cálculo defectuosa no se convierta en un patrón de bits erróneo. El campo bits es el ancho de palabra como entero de dos a sesenta y cuatro inclusive, lo que cubre los anchos docentes habituales int8, int16, int32 e int64 y sigue siendo barato de calcular. Campos ausentes, no enteros y un bits fuera de dos a sesenta y cuatro fallan igual y no se cobran. El contrato es deliberadamente fail-closed: envolver 128 en 10000000 sería una codificación correcta de menos ciento veintiocho, no de ciento veintiocho, y este extremo se niega a confundir esa distinción. Envíe un objeto JSON con dos campos obligatorios. Puede ser un número JSON o una cadena de dígitos decimales con signo más o menos opcional. El valor absoluto debe permanecer dentro del rango de enteros seguros de JavaScript, de modo que el value ecoado siga siendo un número JSON exacto. Se aceptan los alias n, integer y number para value; se aceptan width, bit_width y nbits para bits. En caso de éxito la respuesta ecoa value y bits, devuelve binary como una cadena de exactamente bits caracteres cero o uno, devuelve unsigned como ese mismo patrón interpretado como entero no negativo, y devuelve min y max para mostrar el rango legal junto a la respuesta. Ejemplo: value igual a menos cinco y bits igual a ocho produce binary 11111011, unsigned doscientos cincuenta y uno, min menos ciento veintiocho y max ciento veintisiete. Si value queda fuera de ese rango, el manejador lanza invalid_input y nombra el desbordamiento, por ejemplo al indicar que ciento veintiocho no cabe en complemento a dos de ocho bits.
Dónde un codificador de complemento a dos justifica su uso
Las llamadas API correctas cuestan el $0.002 publicado; los fallos de validación no consumen saldo; nada se almacena tras la respuesta.
Casos de integración
Autocorrección de exámenes y LMS
Califique ítems de complemento a dos con un oráculo determinista que rechaza el desbordamiento como invalid_input en lugar de envolver el entero en otro valor.
Preguntas técnicas
¿Cómo se convierte un entero con signo a binario en complemento a dos?
Envíe el entero como value y el ancho de palabra como bits (2–64). La API devuelve una cadena binaria de exactamente esos caracteres 0/1, más la magnitud sin signo y el rango con signo legal.
¿Cuánto cuesta la calculadora de complemento a dos?
La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago KIT a $0.002 por llamada correcta; la entrada inválida no se cobra.