que-es-signed-unsigned-en-binario

Qué es signed y unsigned en el sistema binario

En el sistema binario, los números enteros pueden ser representados tanto de manera signed (con signo) como unsigned (sin signo). La diferencia es que

  • Unsigned: Los números son únicamente positivos
  • Signed: Los números son positivos o negativos

Esto es algo que confunde mucho al principio. Pero recordemos que una cosa es un número, y otra cosa es la representación de un número. Así

11001000

Es la representación de un número en binario. El número “real” es

  • 200, si considero que es un 8bits unsigned
  • -56, si considero que es un 8bits signed

¡Menuda diferencia! Pero el tema es aún peor. Porque también influye la longitud del número. Si pasamos a 16 bits.

00000000 11001000

Ese número,

  • 200 si considero que es un 16bits unsigned
  • 200 si considero que es un 16bits signed

¿Por qué? Porque aún tengo muchos ceros a la izquierda para llegar a los números negativos. Para que fuera -56 en 16 bits tendría que ser

11111111 11001000

Ese número es

  • 32740 si considero que es un 16bits unsigned
  • -56 si considero que es un 16bits signed

Signed y unsigned

Signed (Con Signo)

En la representación signed, el bit más significativo (el bit más a la izquierda) se utiliza para indicar el signo del número. Un bit de 0 indica un número positivo, mientras que un bit de 1 indica un número negativo.

Por ejemplo, si estamos trabajando con un byte (8 bits), el rango de números enteros signed es de -128 a 127. El bit más a la izquierda es el bit de signo, por lo que solo hay 7 bits disponibles para representar el valor absoluto del número.

Unsigned (Sin Signo)

En la representación unsigned, todos los bits se utilizan para representar el valor absoluto del número. No hay un bit dedicado al signo, por lo que todos los números son considerados positivos.

Por ejemplo, en un byte (8 bits), el rango de números enteros unsigned es de 0 a 255. Todos los bits están disponibles para representar el valor absoluto del número.

Rangos y Cantidad de Bytes

Como decíamos, la cantidad de bytes y si son signed o unsigned, impacta directamente en el rango de valores que podemos almacenar y en el número que estamos representando.

Aquí hay una tabla que resume los rangos y la cantidad de bytes comúnmente utilizados en la representación de números enteros:

Signed / UnsignedNº de BytesRango
Unsigned1 byte0 a 255
Unsigned2 bytes0 a 65,535
Unsigned4 bytes0 a 4,294,967,295
Signed1 byte-128 a 127
Signed2 bytes-32,768 a 32,767
Signed4 bytes-2,147,483,648 a 2,147,483,647

Rango Extendido para Números Negativos

Es importante mencionar que el rango de números negativos suele tener un valor más negativo que positivo por un motivo, que los positivos incluyen el cero.

En la representación signed, el cero se incluye en el rango positivo, lo que significa que el rango negativo necesita incluir un número adicional para compensar.

Por ejemplo, en un byte, el rango signed es de -128 a 127, donde -128 es un número más negativo que -127. Esto se debe a que el cero se encuentra en el rango positivo.