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: