Download números negativos - Instituto Tecnológico de Costa Rica

Document related concepts

Representación de números con signo wikipedia , lookup

Complemento a dos wikipedia , lookup

Extensión de signo wikipedia , lookup

Unidades de información wikipedia , lookup

Coma flotante wikipedia , lookup

Transcript
Sistemas numéricos
-números negativos-
Taller de programación
I semestre, 2016
Temas
●
Números negativos
Números binarios negativos
Problema: ¿cómo representar números negativos en un mecanismo
computacional?
- Como es de esperar han surgido varias formas de solucionarlo, por ejemplo los
métodos (o sistemas):
●
Signo y magnitud
●
Complementos a uno (la base disminuida)
Sin embargo el método que ha funcionado mejor y por ende se sigue utilizando de
formas más general es el complemento a dos o complemento a la base.
Números binarios negativos
Signo y magnitud
Complemento a uno
Se utiliza el bit más significativo para denotar
el signo del número representado.
En este método se sigue utilizando el bit más
significativo para representar el signo de los
números (el cero para positivo), pero la
representación de los negativos cambia
ligeramente.
●
Si esta en cero quiere decir que el número
es positivo y en uno es negativo.
Dado un tamaño fijo para la representación de
los números (8bits), tendríamos que la
representación de (7)10 en binario
complemento a uno es: 00000111 (en azul se
marca el signo)
Su correspondiente negativo se obtiene
invirtiendo todos los bits del número, o sea
(-7)10= (11111000)2 complemento a uno.
Este método a pesar de ser sencillo para los
h.s.s es complicado de procesar en un
computador en el cual se quieren incorporar
operaciones aritméticas... (o sea todos)
¿En 8 bits cuantos números puedo representar?
¿Cómo represento el cero?
Números binarios negativos
Complemento a dos
Es el método utilizado en los procesadores actuales.
La representación de números positivos utilizando complemento a dos es exactamente igual a como
se ha presentado anteriormente. En el caso de los número negativos el procedimiento consiste en
sacar el complemento a uno del número que quiero representar y luego sumarle 1.
●
Recordar que en esta representación también se trabaja con número de tamaño fijo.
Si utilizamos una representación en 8 bits, la representación del número -77 sería:
1. 77 (positivo) en binario (8bits) es: 01001101
2. El complemento a uno de 77 (positivo es): 10110010
3. Luego le sumamos uno al complemento: 10110010 + 00000001 = 10110011
Nota: el bit más significativo indica si el número es positivo (0) o negativo(1). En caso de ser
negativo para saber que número representa se puede convertir con el mismo procedimiento a su
valor positivo y luego ya sabremos cual número negativo representaba.
Números binarios negativos
●
●
●
●
La primera columna muestra los posibles
patrones que se pueden representar
utilizando 8 bits (combinaciones).
La segunda corresponde al número decimal
que representa el patrón de la columna uno.
La tercera y cuarta indican la interpretación
que se le da a las distintas
representaciones según se utilice
complemento a dos o complemento a uno
respectivamente.
¿Cuantos distintos valores puedo
representar utilizando 8 bits y complemento
a dos?
Aritmética en complemento a dos
Los procesadores actuales utilizan aritmética en complemento a dos porque permiten crear circuitos sencillos,
eficientes y baratos
●
●
Utilizando complemento a dos no es necesario modificar la circuitería requerida para sumar con operandos
positivos y/o negativos. Por ejemplo:
Una vez efectuada la suma, si hubiera un acarreo este se descarta.
El circuito sumador (en el ALU) no sabe si un número es positivo o negativo, el simplemente suma y es responsabilidad
del programador saber interpretar la representación.
●
Esto nos permite operar con números con o sin signo de la misma manera.
Es muy importante tener claro los posibles valores que se pueden representar con el número de bits en que se de la
representación de los números. Ej: en 8 bits solo puedo operar con números entre -128 y 127, fuera de ese rango
habría un error en el resultado.
Aritmética en complemento a dos
Esta representación nos permite trabajar las restas utilizando el mismo circuito que
realiza las sumas.
●
●
El procedimiento consiste en sumar el minuendo con el complemento a dos del
sustraendo.
Una vez efectuada la suma, si hubiera un acarreo este se descarta.
¡Acarreo se descarta!
Aritmética
Ejercicio: convierta a binario y realice las operaciones aritméticas
Asuma que el tamaño de los registros (precisión) es de 8 bits e indique cuando hay un
acarreo.
●
(CC)16 + (3B)16,
(B5)16 + (8F)16,
●
(AB)16 + (CD)16,
●
(8)16 - (1)16,
●
(1001)2 * (1100)2,
●
(101000)2 / (1000)2,
(A7)16 + (1F)16,
(32)16 + (65)16,
(C4)16 - (25)16,
(EE)16 – (BA)16
(1101)2 * (1111)2
(100111.0)2 / (110)2
Utilizar complemento a dos:
●
(DB)16 - (B2)16
(8B)16 - (81)16
(86)16 – (36)16
Referencias y Lecturas Complementarias
●
●
Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa
Rica. I semestre 2011.
Las presentaciones para el curso IC-1801: "Taller
de Programación" por Ing. En Computación
Alajuela se distribuyen bajo una Licencia Creative
Commons Atribución-Compartir Igual 3.0 Costa
Rica.
11
http://creativecommons.org/licenses/by-sa/3.0/cr/
http://creativecommons.org/licenses/by-sa/3.0/cr/
*La licencia de la presentación no cubre las imágenes utilizadas*
Sistemas numéricos
-números negativos-
Taller de programación
I semestre, 2016
Temas
●
Números negativos
Números binarios negativos
Problema: ¿cómo representar números negativos en un mecanismo
computacional?
- Como es de esperar han surgido varias formas de solucionarlo, por ejemplo los
métodos (o sistemas):
●
Signo y magnitud
●
Complementos a uno (la base disminuida)
Sin embargo el método que ha funcionado mejor y por ende se sigue utilizando de
formas más general es el complemento a dos o complemento a la base.
Números binarios negativos
Signo y magnitud
Complemento a uno
Se utiliza el bit más significativo para denotar
el signo del número representado.
En este método se sigue utilizando el bit más
significativo para representar el signo de los
números (el cero para positivo), pero la
representación de los negativos cambia
ligeramente.
●
Si esta en cero quiere decir que el número
es positivo y en uno es negativo.
Dado un tamaño fijo para la representación de
los números (8bits), tendríamos que la
representación de (7)10 en binario
complemento a uno es: 00000111 (en azul se
marca el signo)
Su correspondiente negativo se obtiene
invirtiendo todos los bits del número, o sea
(-7)10= (11111000)2 complemento a uno.
Este método a pesar de ser sencillo para los
h.s.s es complicado de procesar en un
computador en el cual se quieren incorporar
operaciones aritméticas... (o sea todos)
¿En 8 bits cuantos números puedo representar?
¿Cómo represento el cero?
Signo y magnitud es la forma más sencilla.
En complemento a uno, lo único que hago es invertir
todos los bits. (incluido el de signo)
¿En 8 bits cuantos números puedo representar?
2**8 = 256 signos distintos.
128 positivos y 128 negativos (recordemos que el bit más
significativo es el signo), o sea el cero más 127 números,
o sea represento el rango de -127 hasta 127. (pero tengo
dos representaciones para el cero)
¿Cómo represento el cero? Tiene dos representaciones:
Cero positivo: 00000000
Cero negativo: 11111111
Números binarios negativos
Complemento a dos
Es el método utilizado en los procesadores actuales.
La representación de números positivos utilizando complemento a dos es exactamente igual a como
se ha presentado anteriormente. En el caso de los número negativos el procedimiento consiste en
sacar el complemento a uno del número que quiero representar y luego sumarle 1.
●
Recordar que en esta representación también se trabaja con número de tamaño fijo.
Si utilizamos una representación en 8 bits, la representación del número -77 sería:
1. 77 (positivo) en binario (8bits) es: 01001101
2. El complemento a uno de 77 (positivo es): 10110010
3. Luego le sumamos uno al complemento: 10110010 + 00000001 = 10110011
Nota: el bit más significativo indica si el número es positivo (0) o negativo(1). En caso de ser
negativo para saber que número representa se puede convertir con el mismo procedimiento a su
valor positivo y luego ya sabremos cual número negativo representaba.
Números binarios negativos
●
●
●
●
La primera columna muestra los posibles
patrones que se pueden representar
utilizando 8 bits (combinaciones).
La segunda corresponde al número decimal
que representa el patrón de la columna uno.
La tercera y cuarta indican la interpretación
que se le da a las distintas
representaciones según se utilice
complemento a dos o complemento a uno
respectivamente.
¿Cuantos distintos valores puedo
representar utilizando 8 bits y complemento
a dos?
¿Cuantos distintos valores puedo representar utilizando 8 bits y
complemento a dos?
●
Desde el -128 hasta el 127 (positivo), me gané un número negativo
con respecto al complemento a dos. Pero muchas facilidades para
llevar acabo operaciones aritméticas en un procesador (restas,
con un sumador, por ejemplo)
Aritmética en complemento a dos
Los procesadores actuales utilizan aritmética en complemento a dos porque permiten crear circuitos sencillos,
eficientes y baratos
●
●
Utilizando complemento a dos no es necesario modificar la circuitería requerida para sumar con operandos
positivos y/o negativos. Por ejemplo:
Una vez efectuada la suma, si hubiera un acarreo este se descarta.
El circuito sumador (en el ALU) no sabe si un número es positivo o negativo, el simplemente suma y es responsabilidad
del programador saber interpretar la representación.
●
Esto nos permite operar con números con o sin signo de la misma manera.
Es muy importante tener claro los posibles valores que se pueden representar con el número de bits en que se de la
representación de los números. Ej: en 8 bits solo puedo operar con números entre -128 y 127, fuera de ese rango
habría un error en el resultado.
En la suma es de vital importancia utilizar una
representación de tamaño fijo o sea que si se utiliza
el bit más significativo como signo se debe respetar
en el resultado.
Ej: si la representación es de 8 bits, entonces los
posibles valores serán de -127 hasta 127, lo cual
quiere decir que se debe tener cuidado con las
sumas que den como resultado más de 127.
Aritmética en complemento a dos
Esta representación nos permite trabajar las restas utilizando el mismo circuito que
realiza las sumas.
●
●
El procedimiento consiste en sumar el minuendo con el complemento a dos del
sustraendo.
Una vez efectuada la suma, si hubiera un acarreo este se descarta.
¡Acarreo se descarta!
Aritmética
Ejercicio: convierta a binario y realice las operaciones aritméticas
Asuma que el tamaño de los registros (precisión) es de 8 bits e indique cuando hay un
acarreo.
●
(CC)16 + (3B)16,
(B5)16 + (8F)16,
●
(AB)16 + (CD)16,
●
(8)16 - (1)16,
●
(1001)2 * (1100)2,
●
(101000)2 / (1000)2,
(A7)16 + (1F)16,
(32)16 + (65)16,
(C4)16 - (25)16,
(EE)16 – (BA)16
(1101)2 * (1111)2
(100111.0)2 / (110)2
Utilizar complemento a dos:
●
(DB)16 - (B2)16
(8B)16 - (81)16
(86)16 – (36)16
Referencias y Lecturas Complementarias
●
Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa
Rica. I semestre 2011.
●
Acá tengo que agregar los textos que avilés ha
utilizado para esto.
Las presentaciones para el curso IC-1801: "Taller
de Programación" por Ing. En Computación
Alajuela se distribuyen bajo una Licencia Creative
Commons Atribución-Compartir Igual 3.0 Costa
Rica.
11
http://creativecommons.org/licenses/by-sa/3.0/cr/
http://creativecommons.org/licenses/by-sa/3.0/cr/
*La licencia de la presentación no cubre las imágenes utilizadas*