Signo-Magnitud

Signo-Magnitud

La representación signo-magnitud usa el bit más significativo como bit de signo, facilitando la comprobación de si el entero es positivo o negativo

Existen varias convenciones para representar en una máquina los números enteros en su forma binaria, tanto positivos como negativos

Todas tratan implicar el bit más significativo (el que está más a la izquierda) de la palabra (1 palabra equivale a 8 bits) como un bit de signo

En una palabra de n bits, los n-1 bits de la derecha representan la magnitud del entero

El caso general correspondería a aplicar la fórmula:

A=\begin{cases}\sum\limits_{i=0}^{n} 0^{n-2} \cdot a_i & \text{si }a_{n-1}=0 \\ -\sum\limits_{i=0}^{n} 0^{n-2} \cdot a_i & \text{si }a_{n-1}=1 \end{cases}

La representación signo-magnitud posee varias limitaciones:

  • La suma y la resta requieren tener en cuenta tanto los signos de los números como sus magnitudes relativas para llevar a cabo la operación en cuestión
  • Hay dos representaciones para el número 0:

    \begin{cases} +0_{(10}=00000000_{(2} \\ -0_{(10}=10000000_{(2} \end{cases}

Debido a estas limitaciones, raramente se usa la representación en signo-magnitud para representar los números enteros en una máquina

En su lugar, el esquema más común es la representación en complemento a dos

Conversiones

Ejemplo: Convertir de decimal a signo-magnitud

Vamos a convertir \pm 18 a signo-magnitud, primero lo convertimos a binario

Número Cociente Resto
\frac{18}{2} 9 0
\frac{9}{2} 4 1
\frac{4}{2} 2 0
\frac{2}{2} 1 0

Entonces tenemos que la parte binaria es:

18_{(10} = 10010_{(2}

Ahora le aplicamos la distinción por signo dentro de 1 palabra (recordemos que son 8 bits), entonces tenemos:

\begin{cases} +18_{(10}=00010010_{(2} \\ -18_{(10}=10010010_{(2} \end{cases}