Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos...

53
Cap 0c: Operaciones en Datos Cap 0c: Operaciones en Datos Prof: J. Solano Universidad Nacional de Ingeniería Facultad de Ciencias Métodos Numéricos MCC613

Transcript of Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos...

Page 1: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Cap 0c: Operaciones en DatosCap 0c: Operaciones en Datos

Prof: J. Solano

Universidad Nacional de IngenieríaFacultad de Ciencias

Métodos NuméricosMCC613

Page 2: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Objetivos

Después de estudiar este capítulo el estudiante será capaz de:

2

Listar las tres categorías de operaciones que se realizan en los datos.

Realizar operaciones lógicas binarias y unitarias en los patrones de bits.

Distinguir entre las operaciones de cambio (shift) lógicas y aritméticas.

Realizar sumas y restas de números enteros cuando están almacenados en formato de complemento a dos.

Realizar sumas y restas de números enteros cuando se guardan en formato signo y magnitud.

Realizar operaciones de suma y resta en reales almacenados en formato de punto flotante.

Page 3: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

OPERACIONES LÓGICASOPERACIONES LÓGICAS

En el capítulo anterior vimos que los datos son En el capítulo anterior vimos que los datos son almacenados en el computador como patrones de bits. almacenados en el computador como patrones de bits. Operaciones lógicasOperaciones lógicas se refieren a las operaciones que se refieren a las operaciones que aplican la misma operación básica sobre bits aplican la misma operación básica sobre bits individuales de un patrón, o en dos bits individuales de un patrón, o en dos bits correspondientes en dos patrones. Esto significa que correspondientes en dos patrones. Esto significa que podemos definir las operaciones lógicas a nivel de bits podemos definir las operaciones lógicas a nivel de bits ((bitbit levellevel) y a nivel de patrones () y a nivel de patrones (pattern levelpattern level). ). Una operación lógica a nivel de patrones son n Una operación lógica a nivel de patrones son n operaciones lógicas, del mismo tipo, a nivel de bits, operaciones lógicas, del mismo tipo, a nivel de bits, donde n es el número de bits en el patrón.donde n es el número de bits en el patrón.

3

Page 4: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Algebra Booleana es la base de los circuitos lógicos de computadores y muchos dispositivos electrónicos

Operaciones lógicas a nivel de bits

Un bit puede tomar dos valores: 0 ó 1. Solo interpretamos el 0 como el valor false (falso) y 1 como el valor true (verdadero), y podemos aplicar las operaciones definidas en el algebra booleana para manipular bits. Boolean algebra (algebra boolena), llamada así en honor de George Boole, se convirtió en un campo especial de la Matemática llamado Lógica. Una gran aplicación del algebra booleana está en la construcción de circuitos lógicos en computadores. En esta sección solo discutiremos cuatro operaciones a nivel de bits, que son usadas para manipular bits: NOT, AND, OR, y XOR.

4

Page 5: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 5

Page 6: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Para x = 0 o 1 x AND 0 → 0 0 AND x → 0Para x = 0 o 1 x AND 0 → 0 0 AND x → 0

NOTNOTEl operador NOT es un operador unitario: toma solo un El operador NOT es un operador unitario: toma solo un input. El bit ouput es el complemento del input.input. El bit ouput es el complemento del input.

ANDANDEl operador AND es un operador binario: toma dos El operador AND es un operador binario: toma dos inputs. El bit ouput es 1 si ambos inputs son 1s y 0 en inputs. El bit ouput es 1 si ambos inputs son 1s y 0 en los otros tres casos.los otros tres casos.

6

Page 7: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Para x = 0 ó 1 x OR 1 → 1 1 OR x → 1Para x = 0 ó 1 x OR 1 → 1 1 OR x → 1

OROREl operador OR es un operador binario: toma dos El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos.en los otros tres casos.

7

XORXOREl operador XOR es un operador binario como el El operador XOR es un operador binario como el operador OR con solo una diferencia: el bit ouput es 0 operador OR con solo una diferencia: el bit ouput es 0 si ambos inputs son 1s.si ambos inputs son 1s.

Para x = 0 ó 1 Para x = 0 ó 1 x XOR 1 → NOT x 1 XOR x → NOT xx XOR 1 → NOT x 1 XOR x → NOT x

Page 8: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Ejemplo 1

En inglés se usa la conjunción “or” a veces para referirse a inclusive-or, y otras veces para exclusive-or.

a. The sentence “I would like to have a car or a house” uses “or” in the inclusive sense—I would like to have a car, a house or both.

b. The sentence “Today is either Monday or Tuesday” uses “or” in the exclusive sense—today is either Monday or Tuesday, but it cannot be both.

8

Page 9: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

El operador XOR no es un operador nuevo. Siempre podemos simularlo usando los otros tres operadores. Las siguientes dos operaciones son equivalentes

La equivalencia puede probarse si hacemos la tabla de verdad para ambos

9

x XOR y ↔ [x AND (NOT y)] OR [(NOT x) AND y]

Ejemplo 2

Page 10: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 10

Page 11: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 11

Page 12: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 12

Page 13: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 13

Page 14: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 14

Page 15: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 15

Page 16: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 16

Page 17: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 17

Page 18: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 18

Page 19: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

OPERACIONES SHIFT (DESPLAZAMIENTO)OPERACIONES SHIFT (DESPLAZAMIENTO)

Operaciones ShiftOperaciones Shift mueve los bits en un patrón, cambiando la mueve los bits en un patrón, cambiando la posición de los bits. Ellos pueden mover bits a la izquierda o a posición de los bits. Ellos pueden mover bits a la izquierda o a la derecha. Podemos dividir operaciones shift en dos la derecha. Podemos dividir operaciones shift en dos categorías: categorías: operaciones shift lógicas y operaciones shift operaciones shift lógicas y operaciones shift aritméticasaritméticas..

19

Page 20: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Operaciones shift lógicas

Una operación shift lógica se aplica a un patrón que no representa un número con signo. La razón es que estas operaciones shift pueden cambiar el signo del número que se define por el bit más a la izquierda en el patrón. Se distinguen dos tipos de operaciones shift lógicas, como se describe a continuación:

Shift lógico

Shift circular lógico (Rotar)

20

Page 21: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 21

Page 22: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 22

Page 23: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 23

Page 24: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 24

Page 25: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 25

Page 26: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 26

Page 27: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 27

Page 28: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 28

Page 29: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 29

Page 30: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

OPERACIONES ARITMÉTICASOPERACIONES ARITMÉTICAS

Operaciones aritméticas implican sumar, restar, multiplicar y Operaciones aritméticas implican sumar, restar, multiplicar y dividir. Podemos aplicar estas operaciones a los números dividir. Podemos aplicar estas operaciones a los números enteros y a los números de punto flotante.enteros y a los números de punto flotante.

30

Page 31: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Operaciones aritméticas en enteros

Todas las operaciones aritméticas como suma, resta, multiplicación y división se puede aplicar a enteros. A pesar que la multiplicación (división) de enteros puede ser implementada usándose suma (resta) repetida, el procedimiento no es eficiente. Hay procedimientos más eficientes para la multiplicación y división, como procedimientos de cabina (Booth procedures), pero estos están fuera del alcance de este curso. Por esta razón, sólo discutimos aquí sumas y restas de números enteros.

31

Page 32: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 32

Page 33: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 33

Page 34: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 34

Page 35: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 35

Page 36: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 36

Page 37: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 37

Page 38: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 38

Page 39: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 39

Page 40: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Cuando hacemos operaciones aritméticas en númerosCuando hacemos operaciones aritméticas en númerosen un computador, debemos recordar que cadaen un computador, debemos recordar que cadanúmero y el resultado deben estar en el rangonúmero y el resultado deben estar en el rangodefinido por la ubicación de bits en memoria.definido por la ubicación de bits en memoria.

40

Page 41: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Enteros en formato signo y magnitud

Suma y resta para enteros en representación signo y magnitud es un poco compleja. Tenemos cuatro combinaciones de signos (dos signos, para cada uno de dos valores) para suma y cuatro diferentes condiciones para resta. Esto significa que debemos considerar ocho situaciones diferentes. Sin embargo, si verificamos primero los signos, podemos reducir esos casos.

41

Page 42: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 42

Page 43: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 43

Page 44: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 44

Page 45: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Operaciones aritméticas en reales

Todas las operaciones aritméticas como suma, resta, multiplicación y división se pueden aplicar a reales almacenados en formato punto flotante. Multiplicación de dos reales envuelve multiplicación de dos enteros en representación signo y magnitud. División de dos reales envuelve división de dos enteros en representación signo y magnitud. Como no discutimos multiplicación ni división de enteros en representación signo y magnitud, no discutiremos aquí multiplicación ni división de reales. Solo mostraremos sumas y restas de reales.

45

Page 46: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613

Suma y resta de reales

Suma y resta de números reales almacenados en punto flotante se reduce a suma y resta de dos enteros almacenados en signo y magnitud (combinación de signo y mantisa) después del alineamiento del punto decimal.

46

Page 47: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 47

Page 48: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 48

Page 49: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 49

Page 50: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 50

Page 51: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 51

Page 52: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 52

Page 53: Cap 0c: Operaciones en Datos · 2020. 1. 5. · El operador OR es un operador binario: toma dos inputs. El bit ouput es 0 si ambos inputs son 0s y es 1 en los otros tres casos. 7

Métodos Numéricos - MCC613 53