Representación numérica en la computadora

Josué Acevedo Maldonado
Nabucodonosor Editorial
3 min readApr 20, 2020

La pesadilla de los numeros negativos.

Photo by Kelly Sikkema on Unsplash

Los datos en las computadoras se almacenan y procesan como números binarios, no obstante, es necesario tomar en cuenta que existen tanto números positivos como negativos y que estos deben tener una representación distinta.

En el caso de los números enteros sin signo, los datos se representan en binario de la forma clásica, en el sistema binario los elementos lo componen son dos dígitos solamente, el cero y el uno; y las posiciones tienen el valor de una potencia de dos.

25 =  16  +  8               + 1
= 1x2⁴ + 1x2³ +0x2² +0x2¹ +1x2⁰
= 11001

Sin embargo, para almacenar y procesar números negativos o con signo es diferente y a lo largo de la historia han existido diferentes métodos para su representación.

Inicialmente para indicar el signo se utilizaba el primer bit de un numero binario, si es cero el número representado es positivo y si el valor es un uno entonces el número que se representa es negativo, esta forma es la más sencilla sin embargo se presta para poder expresar el número cero de dos formas diferentes, esto complica las operaciones aritméticas realizadas en binario.

Número cero expresado en binario, usando el primer bit para indicar el signo. 0 000 0000 => +0
1 000 0000 => -0

Posteriormente apareció otro método, el cual utiliza el complemento a uno, este consiste en invertir los bits que conforman las cifras de un número, de esta forma el primer bit cambia de cero a uno o de uno a cero al invertir el valor, sin embargo existe de nueva cuenta, la posibilidad de tener dos representaciones para el número cero.

Representación de un par de números negativos, utilizando el complemento a uno.

0 011 1000 => +56
1 100 0111 => -56
0 000 0000 => +0
1 111 1111 => -0

Estos dos primeros métodos se utilizaron en las primeras computadoras, pero, debido a la ambigüedad que introducen ambos cayeron en desuso, en la actualidad se emplea el método del complemento a dos para representar los números con signo.

Para obtener el complemento a dos de cualquier número lo que se tiene que hacer es sumar un uno al complemento a uno de ese número, el complemento a dos tiene la ventaja de ser una operación reversible, por lo que si se calcula el complemento a dos del -56, por ejemplo, obtendremos el +56.

Representación de un número negativo, utilizando el complemento a dos. 0 011 1000 => +56
1 100 0111 => complemento a uno
1 100 1000 => complemento a dos -56
1 100 1000 => -56
0 011 0111 => complemento a uno
0 011 1000 => complemento a dos +56
0 000 0000 => +0
1 111 1111 => complemento a uno
0 000 0000 => complemento a dos+0

De esta manera solo existe una sola forma de expresar el número cero. Usando este método para representar los números con signo; en un bloque de ocho bits (un byte) es posible almacenar números en el rango de -128 hasta +127, usando 16 bits números de -32768 hasta +32767 y con 32 bits números que van de -2 mil millones a +2 mil millones.

Esta es la razón por la que en Ensamblador encontramos instrucciones que operan con números sin signos o positivos e instrucciones que solo operan con números negativos o con signo ya que le interpretar un valor binario de una u otra forma nos arrojara resultados distintos, según sea el caso.

Josue Acevedo Maldonado es ingeniero de software, trabaja actualmente como consultor.

Conectarse en LinkedIn.

¡Gracias por ser parte de la comunidad!
Puede encontrar contenido relacionado en el canal de YouTube, Twitter, Twitch, Spotify, etc, ademas del libro Ensamblador X86.

Si ha disfrutado de este artículo y siente que ha aprendido algo valioso, por favor compártalo.

¡Gracias por leer!

--

--

Josué Acevedo Maldonado
Nabucodonosor Editorial

Amante de la tecnologia y con pasion en resolver problemas interesantes, consultor, y creador del canal de youtube NEOMATRIX. https://linktr.ee/neomatrix