Organización de Computadoras 2003
Apunte 1: Sistemas de Numeración: Sistemas Enteros y Punto Fijo
Este apunte fue escrito por el Lic. Daniel H. Marcos. Para realizar alguna consulta con respecto al mismo lo podés hacer a la cuenta de e-mail daniel@lifia.info.unlp.edu.ar o en cualquier horario de práctica.
Este apunte fue escrito en Word, por lo cual se recomienda para imprimirlo bajarse la versión disponible en ese formato.
Los siquientes son ejercicios resueltos sobre sistemas enteros y punto fijo.
Conversiones entre los distintos sistemas
264 / 2 = 132 con resto 0
132 / 2 = 66 con resto 0
66 / 2 = 33 con resto 0
33 / 2 = 16 con resto 1
16 / 2 = 8 con resto 0
8 / 2 = 4 con resto 0
4 / 2 = 2 con resto 0
2 / 2 = 1 con resto 0
1 / 2 = 0 con resto 1 (MSD, dígito más significativo)
El número se lee de abajo hacia arriba, o sea 1000010001, de modo que (529)10 = (1000010001)2
66 / 8 = 8 con resto 2
8 / 8 = 1 con resto 0
1 / 8 = 0 con resto 1 (MSD)
El número se lee de abajo hacia arriba, o sea 1021, de modo que (529)10 = (1021)8
33 / 16 = 2 con resto 1
2 / 16 = 0 con resto 2 (MSD)
El número se lee de abajo hacia arriba, o sea 211, de modo que (529)10 = (211)16
0.742 x 2 = 1.484 con parte entera 1
0.484 x 2 = 0.962 con parte entera 0
0.962 x 2 = 1.936 con parte entera 1
0.936 x 2 = 1.872 con parte entera 1
0.872 x 2 = 1.744 con parte entera 1
0.744 x 2 = 1.488 con parte entera 1
0.488 x 2 = 0.976 con parte entera 0
0.976 x 2 = 1.952 con parte entera 1 (LSD, dígito menos significativo)
El número se lee de arriba hacia abajo, o sea 0.010111101, de modo que (0.371)10 = (0.010111101)2
0.968 x 8 = 7.744 con parte entera 7
0.744 x 8 = 5.952 con parte entera 5 (LSD, dígito menos significativo)
El número se lee de arriba hacia abajo, o sea 0.275, de modo que (0.371)10 = (0.275)8
0.936 x 16 = 14.976 con parte entera 14 (LSD)
El número se lee de arriba hacia abajo, o sea 5E (E es equivalente a 14), de modo que (0.371)10 = (0.5E)16
= 8 + 1 + 1/2 + 1/8
= 9.625
Por lo tanto, (1001.101)2 = (9.625)10
= 512 + 192 + 8 + 1 + 0.625 + 0.09375
= 713.71875
Por lo tanto, (1311.56)8 = (713.71875)10
= 2x162 + 12x161 + 9x160 + 11x16-1 + 8x16-2
= 512 + 192 + 9 + 0.6875 + 0.03125
= 713.71875
Por lo tanto, (2C9.B8)16 = (713.71875)10
= (1011101001.010111)2
= (110011001.1)2
= (0101 1100.1011 1100)BCH = (5C.BC)16
= (111 100 010 111.101 001 100)BCO = (7427.514)8
Operaciones aritméticas
Representación en complemento a la base reducida en el sistema binario (Ca1)
Convirtiendo el resultado a decimal obtenemos que la suma da +94.
Como el resultado es un número negativo (el bit de signo está en 1) para leerlo hay que recomplementarlo (obteniendo 00110111) y recién entonces convertirlo a decimal; en nuestro caso obtenemos como resultado 55.
Representación en complemento a la base en el sistema binario (Ca2)
El 56 es 00111000
11000111 (Ca1) + 1 = (Ca2) 11001000 (-56)
0101 1000 88
1010 1000 -88
En nuestro caso, si recomplementamos el 11010010 obtenemos 00101110, que representa el número decimal +46.
01110101 (representación en Ca2 de 117) + 11011100 (representación en Ca2 de 36) = 101010001, el acarreo se desprecia
Como el acarreo se desprecia el resultado es 01010001, que convirtiéndolo a decimal nos da 81.
Como el resultado es un número negativo (el bit de signo es 1) para leerlo primero hay que recomplementarlo, obteniendo 00011100, y recién entonces convertirlo a decimal; el resultado de esta operación es 28.
Representación en Exceso
En general los excesos son a la 2n-1, para que haya igual cantidad de números positivos y negativos. El exceso, a diferencia del Ca1 y Ca2, si empieza con 0 es negativo y si empieza con 1 es positivo. En exceso, al igual que en Ca2, existe una única representación del 0.
10110110 10000000 = 00110110
188 128 = 60
Por lo tanto, obtenemos que 10110110 es el 60 sin exceso.
10000000 - 00011101 = 01100011
128 - 29 (el 29 es el número en exceso) = 99 (el 99 es el número sin exceso)
Por lo tanto, obtenemos que 00011101 es el 99 sin exceso.
15 + 128 = 143
Por lo tanto, el 15 en exceso es 10001111.
10000000 01111011 = 00000101
128 123 = 5
Por lo tanto, el 123 en exceso es 00000101.
Overflow y Carry
Tanto en la representación en Ca1 como en Ca2 una operación puede dar como resultado un número que excede la capacidad de la palabra de memoria, produciéndose así el overflow.
Al sumar dos números el overflow se puede dar sólo si los dos tienen el mismo signo; la suma de dos números de distinto signo nunca dará como resultado un número con módulo mayor al de mayor módulo de los dados, al máximo será igual (al sumarle 0 a otro número), pero en general será menor, por lo tanto no puede exceder la capacidad de la palabra de memoria.
El overflow se reconoce cuando los bits de signo de los dos números que se suman son iguales entre si pero distintos del bit de signo del resultado, o sea cuando los números son positivos y da resultado negativo o viceversa. En este caso el contenido de la palabra de memoria es incorrecta.
Si tengo una suma en BSS y me da carry significa que el resultado es erróneo. Me da algo por afuera de lo que puedo escribir. El resultado no se puede escribir en el rango que hay.
La suma da overflow ya que al sumar los dos positivos dio negativo. El resultado es incorrecto.
01011100 (representación en Ca1 de 92) + 00110101 (representación en Ca1 de 53) = 10010001
El bit más significativo es 1, por lo tanto, hay overflow.
En la suma representada en decimal se puede deducir que habrá overflow porque el resultado es mayor que 127, que es el mayor número representable en Ca1 en una palabra de 8 bits.
Si me da carry cuando trabajo en Ca2 se desprecia, ya que el resultado queda bien.
10101101 (representación en Ca2 de 83) + 10111010 (representación en Ca2 de 70) = 101100111
El acarreo en Ca2 se desprecia. El bit más significativo es 1, por lo tanto, hay overflow. El overflow cuando trabajo en Ca2 significa que el resultado es erróneo.
Observando el resultado en decimal se puede asegurar que habrá overflow, ya que es más chico que 128, que es el menor número que se puede representar en Ca2 en una palabra de 8 bits.0
Capacidad de representación, resolución y rango en sistemas restringidos a n bits
Capacidad de representación: Es la cantidad de números que se pueden representar. Ya sea en punto fijo o no es bn. Por ejemplo, si tengo un sistema restringido a 5 bits, sería 25 números, es decir, 32 números.
Resolución: Es la mínima diferencia entre un número representable y el siguiente. Se podría decir que es la diferencia entre el 0 y el siguiente. Por ejemplo, en binario con dos dígitos fraccionarios es 0.01.
Rango: El rango de un sistema está dado por el número mínimo representable y el número máximo representable. Por ejemplo, en binario con cinco dígitos es [0, 31] (donde el 0 es 00000 y el 31 es 11111). El número máximo representable en un sistema para la parte entera es bn-1.
El número mínimo representable es 00000, es decir, el 0 decimal.
Por lo tanto, el rango es [0, 31]. Como podemos ver el rango en un sistema BSS es [0 2n-1].
La capacidad de representación es 25, es decir, 32 números.
La resolución es 1, lo cual obtenemos al hacer la resta entre 00000 y su próximo número representable, es decir, 00001.
El número mínimo representable es 11111, es decir, el -15 decimal.
Por lo tanto, el rango es [-15, 15]. Como podemos ver el rango en un sistema BCS es [-(2n-1-1) 2n-1-1].
La capacidad de representación sigue siendo bn, es decir 25, 32 números (hay dos representaciones posibles del 0).
La resolución sigue siendo 1.
Vmax = 1x23 + 1x22 + 1x21 + 1x20 + 1x2-1 + 1x2-2 + 1x2-3
= 8 + 4 + 2 + 1 + 1/2 + 1/4 + 1/8
= 15 + 0.875
= 15.875
El número mínimo representable es 0000.000, es decir, 0.
Por lo tanto, el rango es [0, 15.875].
La capacidad de representación es 27, es decir, 128 números.
La resolución es de 0.125, obteniéndolo al interprentar el valor de 0000.001.
Como podemos ver, con los números fraccionarios perdemos rango pero podemos representar números con más precisión.
Vmax = 1x22 + 1x21 + 1x20 + 1x2-1 + 1x2-2
= 4 + 2 + 1 + 1/2 + 1/4
= 6 + 0.75
= 6.75
El número mínimo representable es 000.00, es decir, 0.
Por lo tanto, el rango es [0, 6.75].
La capacidad de representación es 25, es decir, 32 números.
La resolución es de 0.25, obteniéndolo al interprentar el valor de 000.01.
El rango en Ca2 es [-(2n-1-1)-1 (2n-1-1)], o [-2n-1 (2n-1-1)].
El rango en exceso es [-(2n-1) (2n-1-1)].