Conversión

Calculadora de complemento a dos

Configuración
Reiniciar
Compartir resultado
Guardar
Incorporar
Reportar un error

Compartir calculadora

Añade nuestra calculadora gratis a tu sitio web

Origen

Por favor, introduce una URL válida. Solo se admiten URLs HTTPS.

Estilo

Color de enfoque del borde de entrada, color del interruptor seleccionado, color de desplazamiento del elemento seleccionado, etc.

Avanzado

Por favor, acepte los Términos de Uso.

Vista previa

Guardar calculadora

Configuración de la calculadora

Por favor, ingrese un valor dentro del rango permitido.

Por favor, ingrese un valor dentro del rango permitido.

Por favor, ingrese un valor dentro del rango permitido.

Por favor, ingrese un valor dentro del rango permitido.

Compartir calculadora

¿Qué es el complemento a dos?

El complemento a dos es la forma estándar en que los ordenadores almacenan enteros con signo —números que pueden ser positivos o negativos— usando un número fijo de bits. En lugar de reservar un símbolo aparte para el signo menos, los números negativos se codifican de modo que la suma binaria ordinaria simplemente funciona, sin ningún tratamiento especial del signo. Casi todas las CPU modernas representan los enteros de esta manera.

Esta calculadora toma un entero decimal y un número de bits (8, 16 o 32 bits) y muestra su patrón en complemento a dos tanto en binario como en hexadecimal.

¿Cómo funciona?

Para un ancho elegido de ww bits, cada valor se almacena como un patrón de bits sin signo:

  • Si el número nn es no negativo, su patrón es simplemente el binario de nn, rellenado con ceros a la izquierda hasta ww bits.
  • Si el número nn es negativo, su patrón es el binario de 2w+n2^w + n.

Como nn es negativo en el segundo caso, 2w+n2^w + n es un valor positivo menor que 2w2^w, así que siempre cabe en ww bits. El bit más significativo (el más a la izquierda) acaba siendo 11 para todo número negativo y 00 para todo número no negativo: ese bit actúa como signo.

Fórmula

pattern(n)={nif n02w+nif n<0\text{pattern}(n) = \begin{cases} n & \text{if } n \ge 0 \\ 2^{w} + n & \text{if } n < 0 \end{cases}

El resultado se escribe entonces con exactamente ww dígitos binarios (o w/4w/4 dígitos hexadecimales).

Ejemplos resueltos

Ejemplo 1: un número positivo

Codifica n=5n = 5 en 88 bits. Como 505 \ge 0, el patrón es simplemente 55 en binario, rellenado hasta ocho dígitos:

5000001012=0x055 \rightarrow 00000101_2 = \text{0x05}

Ejemplo 2: menos uno

Codifica n=1n = -1 en 88 bits. Como 1<0-1 < 0, calcula 28+(1)=2561=2552^8 + (-1) = 256 - 1 = 255:

255111111112=0xFF255 \rightarrow 11111111_2 = \text{0xFF}

Menos uno siempre es una fila ininterrumpida de unos, sea cual sea el ancho.

Ejemplo 3: menos cinco

Codifica n=5n = -5 en 88 bits. Calcula 28+(5)=2565=2512^8 + (-5) = 256 - 5 = 251:

251111110112=0xFB251 \rightarrow 11111011_2 = \text{0xFB}

Tabla de referencia (8 bits)

DecimalBinario en complemento a dosHex
5000001010x05
0000000000x00
-1111111110xFF
-5111110110xFB
127011111110x7F
-128100000000x80

Notas

  • Un entero con signo de 88 bits cubre el rango de 128-128 a 127127; 1616 bits cubre de 32,768-32{,}768 a 32,76732{,}767; 3232 bits cubre aproximadamente ±2.1\pm 2.1 mil millones. Los valores fuera del rango elegido se envuelven módulo 2w2^w.
  • El bit inicial es el signo: 00 marca un número no negativo y 11 marca uno negativo.
  • Para convertir un número ordinario no negativo a binario sin bit de signo, usa el conversor de decimal a binario, o el conversor de sistemas numéricos general para otras bases.

Preguntas frecuentes

¿Cuánto es -1 en complemento a dos?

En cualquier ancho son todo unos: 11111111211111111_2 (0xFF) para 8 bits, 111111111111111121111111111111111_2 (0xFFFF) para 16 bits, y así sucesivamente.

¿Cómo obtengo el complemento a dos de un número negativo a mano?

Escribe la magnitud del número en binario, invierte cada bit y luego suma uno. Para 5-5 en 8 bits: 55 es 0000010100000101, invertir da 1111101011111010, y sumar uno da 1111101111111011: el mismo resultado que 2565=251256 - 5 = 251.

¿Por qué importa el número de bits?

El ancho fija cuántos bits ocupa el patrón y, por tanto, el rango de números que puedes almacenar. El mismo valor decimal produce una cadena más larga de ceros o unos a la izquierda a medida que crece el ancho.

Reportar un error

Este campo es obligatorio.