Sunteți pe pagina 1din 64

____________________________________________________________________________

1

INTRODUCCIÓN – DEFINICIONES

En este capítulo se presenta una breve descripción de las partes básicas de una computadora. Se proveen las definiciones básicas y los conceptos fundamentales. Finalmente, se reseña la evolución de los lenguajes de programación y se seña- lan las características de los más representativos de cada uno de ellos.

1

..

1.

DEFINICIONES DE DATO, PROCESO E INFORMACIÓN

Dato e información son dos términos que suelen confundirse, pero en Infor- mática representan cosas muy distintas.

Dato es el conjunto de valores (números o caracteres) que ingresan a una computadora. Estos datos pueden ser administrativos, científicos, comerciales, etc., y son elementos primitivos.

Información es producto obtenido luego del procesamiento de los datos.

La computadora se utiliza para procesar en forma automática los datos, lo- grándose una gran velocidad de tratamiento de los mismos, y como resultado de dicho proceso se obtiene la información deseada, la que podrá ser útil en la toma de decisiones.

Dato Información Proceso
Dato
Información
Proceso

Figura 1.1: Relación dato-proceso-información

  • 1.2. DEFINICIÓN DE SISTEMA

Un sistema es un conjunto de componentes relacionados que interac- túan para realizar una tarea. Un sistema informático está compuesto por el Hardware (Unidad Central de Proceso: CPU, dispositivos periféricos) y el Soft- ware (sistema operativo y los programas).

El software de un sistema de información está formado por los datos, los programas de ingreso, actualización e informe de resultados y los procedimientos manuales y por máquina.

  • 1.3. LA ESTRUCTURA DE UNA COMPUTADORA

Una PC es una computadora personal (Personal Computer), originalmen- te diseñada para servir a un sólo usuario. Salió al mercado en 1981 y ha evolu- cionado en cuanto a capacidad y velocidad, además su costo se ha ido reducien- do. Existen diferentes configuraciones para adecuarse a las múltiples necesida- des de los usuarios.

La informática es la ciencia que estudia el tratamiento, elaboración,

transmisión y utilización de la información. Es una ciencia porque constituye un conjunto de conocimientos de validez universal y porque utiliza el método cien- tífico para el logro de sus objetivos.

_______________________________________________________________________________

1

____________________________________________________________________________

Se denomina HARDWARE (ferretería) a todos los componentes electrónicos y mecánicos, es decir partes físicas de una computadora. Se denomina SOFT- WARE al conjunto de programas o procedimientos que determinan las acciones de la máquina, por lo que se puede decir que es todo lo concerniente a la progra- mación. Las computadoras están estructuradas según un modelo básico de funcio- namiento que describe la interacción que se realiza entre los elementos que la componen. Este modelo es:

Monitor Mouse Modem CPU Impresora Escaner Teclado
Monitor
Mouse
Modem
CPU
Impresora
Escaner
Teclado
____________________________________________________________________________ Se denomina HARDWARE (ferretería) a todos los componentes electrónicos y mecánicos, es decir partes físicas

Figura 1.2: Modelo básico de computadora

1.4. DEFINICIÓN DE UNIDADES

Las unidades son las partes físicas que componen la computadora y se cla- sifican en unidades de entrada–salida (E/S) denominadas también periféricos, y unidad de proceso (UCP o CPU). Además de las unidades se encuentran los soportes, que son elementos externos a la computadora, no imprescindibles para su funcionamiento, pero necesarios para el almacenamiento de la información.

1.4.1. Unidades de E/S

Las unidades de entrada–salida son elementos del hardware diseñadas para el ingreso y egreso de los datos. Existen unidades cuya tarea específica es el in- greso de datos, otras que sólo sirven para el egreso de la información, y hay un tercer grupo que puede cumplir con ambas funciones.

Entrada Teclado Mouse o Ratón, Trackball, Cat Scanner Lectora de barras Lápiz óptico Lectora de CD-ROM
Entrada
Teclado
Mouse o Ratón, Trackball, Cat
Scanner
Lectora de barras
Lápiz óptico
Lectora de CD-ROM (DVD)
Micrófono
Monitor
Sistema de vídeo
Unidades de
Placa de vídeo
Impresora
Entrada–Salida
Salida
Plotter
Parlante
Placa de audio
Sistema de audio
Parlantes
E/S
Módem
Disqueteras
Grabadora de CD
Integer
Pantallas táctiles

Tabla 1.1: Clasificación de las unidades.

_______________________________________________________________________________

2

____________________________________________________________________________

1.5. LOS SOPORTES DE LA INFORMACIÓN

Los soportes de la información son medios físicos de almacenamiento de in- formación. Ellos se pueden clasificar en:

Papel: es el soporte más antiguo de información que aún sigue en uso (un ejemplo son los listados).

Magnéticos: son aquellos medios que están basados en las propiedades magnéticas para el registro de la información. La mayor parte de los mismos se usan como elemento de almacenamiento masivo.

Cintas de carrete abierto de 1/2" de ancho. Disquetes Cintas de vídeo (casete) Cintas en tarjetas plásticas

Medios Ópticos: están basados en la capacidad de poder o no reflejar la luz emitida por un determinado elemento (emisor).

CD-ROM. DVD (Digital Vídeo Disk o Digital Versatil Disk)

Disco Rígido es difícil de catalogar ya que es un sistema en sí mismo que posee una unidad de entrada/salida que son las cabezas lectoras- grabadoras y un soporte que son los discos propiamente dichos. Al- gunos de ellos vienen con una pequeña pero completa unidad de pro- ceso.

1.6. LA UNIDAD CENTRAL DE PROCESO Y EL PROCESADOR

La unidad central de proceso UCP es el verdadero cerebro de la computado- ra; su misión consiste en coordinar, controlar y realizar todas las operaciones del sistema. Se compone de elementos cuya naturaleza es exclusivamente electróni- ca (circuitos).

Sus partes principales son las siguientes:

El Procesador (P): Se compone de:

La unidad de control (UC). La unidad aritméticológica (UAL).

La Memoria Central (MC).

La unidad central de proceso incorpora también un cierto número de regis- tros rápidos (pequeñas unidades de memoria) de propósito especial, que son utili- zados internamente por la misma.

Una aproximación a diseño interno de un microprocesador sería la de la figu- ra 1.3:

_______________________________________________________________________________

3

____________________________________________________________________________

Figura 1.3: Microprocesador
Figura 1.3: Microprocesador

Como se observa en la figura 1.3, la unidad de control y la unidad aritméticológica constituyen lo que se denomina: el procesador central del sistema. Este elemento es parte de la unidad central de proceso encargada del control y la eje- cución de las operaciones del sistema. Estas unidades se encuentran integradas en un único chip llamado microprocesador. Las funciones principales de la UCP de una computadora son:

Ejecutar las instrucciones de los programas almacenados en la memoria del sistema. Controlar la transferencia entre la UCP y la memoria o las unidades de E/S Responder a las peticiones de servicio procedente de los periféri- cos.

Los programas tienen como objetivo realizar diferentes funciones o aplica- ciones, limitadas solamente por la capacidad e imaginación del programador.

Para que un programa sea ejecutado el mismo se debe hallar en determina- das posiciones de memoria y debe estar escrito en un lenguaje de modo que la UCP lo pueda entender. La UCP el único lenguaje que comprende es el binario.

La UCP lee en forma ordenada la lista de instrucciones, luego las interpreta, y posteriormente controla la ejecución de cada una de ellas. Las ejecuciones se realizan en forma consecutiva una tras otra.

Para ejecutar cada instrucción, la UCP realiza la siguiente serie de pasos:

_______________________________________________________________________________

4

____________________________________________________________________________

Lee de la memoria la instrucción que hay que ejecutar y la guarda en un registro interior de la UCP. Identifica la instrucción que acaba de leer Comprueba si la instrucción necesita utilizar nuevos datos de me- moria, si fuera así, determina donde debe ir a buscarlos. Busca los datos en la memoria y los trae a la UCP. Ejecuta la instrucción propiamente dicha. El resultado puede ser que se almacenada en la memoria o en otro soporte externo. Luego, vuelve al primer paso para empezar una nueva instrucción.

La anterior es una lista simplificada de los pasos que ejecuta el microproce- sador.

La ejecución de cada instrucción implica el movimiento de datos, y como es- tos pasos se deben realizar en forma secuencial y ordenada, la UCP sigue las señales dadas por un reloj. El reloj es un elemento simple, pero de gran impor- tancia como se verá luego. Para una mejor comprensión del funcionamiento de la UCP, se la puede dividir en dos unidades: la unidad de control y la unidad arit- mético-lógica. . 1.7. LA UNIDAD DE CONTROL (UC)

La unidad de control (UC) es el centro nervioso de la computadora (figura 1.4); desde ella se controlan y gobiernan todas las operaciones (búsqueda, deco- dificación, y ejecución de las instrucciones). Para realizar su función, consta de los siguientes elementos:

Registro de contador de programas (CP) Registro de Instrucciones (RI) Decodificador (D) Reloj (R)

− − Generador de Señales o Secuenciador (S)

Registro de contador de programas (CP).

También denominado registro de control de Secuencia (RCS), contiene permanentemente la dirección de memoria de la próxima instrucción a ejecutar. Si la instrucción que se está ejecutando en un instante determinado es de salto o de ruptura de secuencia, el RCS tomará la dirección de la instrucción que se tenga que ejecutar a continuación; esta dirección la extraerá de la propia instrucción en curso.

Como ya se vio, el primer paso para la ejecución de una instrucción, consiste en buscarla en la memoria, el CP indica cuál es la dirección de la memoria donde se encuentra esa instrucción. Una vez obtenida la misma y antes de continuar con los siguientes pasos una señal de control incrementa el CP en una unidad, por lo cual los programas deben estar escritos (cargados) en posiciones consecutivas de memoria. El CP pasa la dirección al Registro de Direcciones.

Registro de Direcciones (RD).

Contiene la dirección de la memoria donde se encuentra la próxima instruc- ción y está comunicado con el Bus de Direcciones. El tamaño de este registro de-

_______________________________________________________________________________

5

____________________________________________________________________________

termina el tamaño de la memoria que puede direccionar. (Si es de 32 bits se pue- de direccionar 2 32 =4.294.967.296 B 4 GB de memoria).

Con la dirección de memoria, se transfiere a través el Bus de Datos desde la memoria central al Registro de Datos en la UC la instrucción correspondiente. Es- ta transferencia se realiza mediante señales de control. Una vez que la instrucción se encuentra en la UCP, el código de la instrucción pasa al registro de instruccio- nes.

Registro de Instrucciones (RI)

Contiene la instrucción que se está ejecutando en cada momento. Esta ins- trucción llevará consigo el código de operación (CO), la acción de la que se trata, y los operandos o las direcciones de memoria de los mismos. Luego, pasa el CO al decodificador.

Decodificador (D).

Se encarga de extraer y analizar el código de operación de la instrucción en curso (que está en el RI) y de dar las señales necesarias al resto de los elemen- tos para su ejecución por medio del Generador de Señales.

Generador de Señales (GS).

En este dispositivo se generan órdenes muy elementales (micro-órdenes) que, sincronizadas por los impulsos del reloj, hacen que se ejecute poco a poco la instrucción que está cargada en el RI.

Reloj (R).

Proporciona una sucesión de impulsos eléctricos a intervalos constantes (frecuencia constante), que marcan los instantes en que han de comenzar los dis- tintos pasos de que consta cada instrucción.

Figura 1.4: Unidad de Control.
Figura 1.4: Unidad de Control.

Unidad aritméticológica (UAL)

Esta unidad (ver la figura 1.5) es la encargada de realizar las operaciones elementales de tipo aritmético (generalmente sumas o restas) y de tipo lógico (ge-

_______________________________________________________________________________

6

____________________________________________________________________________

neralmente comparaciones). Para cumplir su función, consta de los siguientes elementos:

Banco de registros (BR). Circuitos operadores (CIROP). Registro de resultado (RR). Señalizadores de estado (SE).

Banco de registros (BR).

Está constituido por 8, 16 ó 32 registros de tipo general que sirven para si- tuar datos antes de cada operación, para almacenar datos intermedios en las ope- raciones y para operaciones internas del procesador.

Circuitos operadores (CIROP).

Está compuesto por uno o varios circuitos electrónicos que realizan opera- ciones elementales aritméticas y lógicas (sumador, complementador, desplaza- dor, etc.).

Registro de resultado (RR).

Se trata de un registro especial, en el que se depositan los resultados que producen los circuitos operadores.

Señalizadores de estado (SE).

Es un registro con un conjunto de biestables en los que se deja constancia de algunas condiciones que se dieron en la última operación realizada.

Figura 1.5: La Unidad Aritmético-Lógica.
Figura 1.5: La Unidad Aritmético-Lógica.

1.8. LA MEMORIA CENTRAL (MC)

Es la parte de la unidad central de proceso de una computadora donde están almacenadas las instrucciones y los datos necesarios para que un determinado proceso pueda ser realizado.

La memoria central está constituida por un conjunto de celdas ó posiciones de memoria, numeradas de forma consecutiva, capaces de retener la información necesaria, mientras la computadora esté conectada. (ver figura 1.6)

_______________________________________________________________________________

7

____________________________________________________________________________

Por otra parte, es una memoria de acceso directo, es decir, se puede acce- der a una de sus celdas conociendo su posición. Para esta memoria, el tiempo de acceso es más corto que para las memorias auxiliares, por lo tanto, los datos que manejan los procesos deben residir en ella en el momento de su ejecución.

Es importante, no confundir los términos celda ó posición de memoria con el de palabra de computadora, ya que esta última es el conjunto de posiciones de memoria que pueden introducirse o extraerse de la memoria de una sola vez (si- multáneamente).

La memoria central tiene asociados dos registros para la realización de ope- raciones de lectura o escritura, y un dispositivo encargado de seleccionar una cel- da de memoria en cada operación de acceso sobre la misma:

Registro de dirección de memoria (RDM). Registro de intercambio de memoria (RIM). Selector de memoria (SM).

Registro de dirección de memoria (RDM).

Contiene la dirección de la memoria donde se encuentra o va a ser almace- nada la información (instrucción o dato), tanto si se trata de una lectura como de una escritura.

Registro de intercambio de memoria (RIM).

Si se trata de una operación de lectura, el RIM es quien recibe el dato de la memoria señalado por el RDM, para su posterior envío a uno de los registros de la UAL. Si se trata de una operación de escritura, la información a grabar tiene que estar en el RIM, para que desde él se transfiera a la posición de memoria in- dicada por el RDM.

Selector de memoria (SM).

Es el dispositivo que, tras una orden de lectura o escritura, conecta la celda de memoria cuya dirección figura en el RDM con el RIM, posibilitando la transfe- rencia de los datos en un sentido o en otro.

La memoria central suele ser direccionable por octeto o byte; lo celda o posición de memoria contiene 8 bits.

tanto, una

Una de las características fundamentales de una computadora es su capa- cidad de memoria interna (memoria central), la cual se mide en un múltiplo del byte denominado Kilobyte, Kbyte, Kb o simplemente K, y que equivale a 1 024 bytes (1 024 = 2'°).

Otro múltiplo utilizado ampliamente en los últimos tiempos es el Megabyte o simplemente Mega, que equivale a 1 024 * 1 024 Bytes; es decir, a 1 048 576 by- tes.

_______________________________________________________________________________

8

____________________________________________________________________________

Bus de Bus de Direcciones Datos Registro De dirección Registro de intercambio de Memoria de memoria
Bus de
Bus de
Direcciones
Datos
Registro
De dirección
Registro
de intercambio
de
Memoria
de
memoria
Bus de
Control
Selector
Memoria Central
0001
0010
0110
1011
Figura 1.6: La memoria RAM.

1.9. LOS TIPOS DE INSTRUCCIONES

Los tipos se refieren a instrucciones del lenguaje de máquina, éstas son las que puede ejecutar directamente el hardware de la computadora.

Las instrucciones máquina se pueden clasificar por:

La función que desempeñan:

Instrucciones de transferencia de datos. Instrucciones de ruptura de secuencia. Instrucciones aritméticas y lógicas. Instrucciones declarativas. Etcétera.

Por su contenido:

Toda instrucción posee lo que se llama código de operación (CO), que indica qué operación se debe realizar por el procesador, y aquellas en las que su misión sea hacer alguna operación con determinados datos; llevan, además, implícita o explícitamente dichos datos, que se denominan operandos, en función de la cantidad de operandos tenemos:

Instrucciones de tres operandos

También se denominan instrucciones de tres direcciones. En primer lugar, constan de un código de operación al que siguen tres operandos, de los cuales, los dos primeros son los operandos y el tercero es la dirección donde se deposita- rá el resultado. Este formato de instrucción es el más cómodo para trabajar, pero es el que precisa mayor número de bits, como se observa en el esquema siguien- te:

_______________________________________________________________________________

9

____________________________________________________________________________

Código de operación

Operando1

Operando2

Operando3

Instrucciones de dos operandos

Constan de un código de operación, seguido de dos operandos, de los cua- les, uno de ellos actúa además como receptor del resultado. También se denomi- nan instrucciones de dos direcciones.

En el siguiente esquema se ve la Instrucción de dos operandos:

Código de operación

Operando 1

Operando2

Instrucciones de un operando

Se denominan también instrucciones de una dirección, y son las que se utili- zan generalmente en máquinas cuya arquitectura funciona con la filosofía de acumulador.

El acumulador es un registro especial, en el que se encuentra uno de los operandos para este tipo de instrucciones y donde además se guarda el resulta- do.

En la instrucción se encuentra el código de operación seguido del segundo operando:

 

Código de operación

Operando 1

Instrucciones sin operandos

Se denominan también instrucciones sin ninguna dirección. Este tipo de ins- trucciones se utilizan generalmente en computadoras cuya arquitectura tiene la filosofía de pila.

Una pila está formada por datos almacenados en orden consecutivo en la memoria, existiendo un registro especial denominado puntero de la pila que indica la dirección del último dato introducido en ella. Cuando un dato es sacado de la pila, el puntero de la pila decrece, apuntando al dato que está a continuación en la pila hacia el fondo de la misma y que será aquel dato que se introdujo en primer lugar. Cuando se trata de introducir un dato en ella, el puntero toma la dirección de memoria siguiente en orden ascendente y se introduce en dicha dirección.

Estas instrucciones sólo llevan código de operación, de tal forma que cuando se trata de una operación, se sacan los operandos de la pila (previamente intro- ducidos) y el resultado se introduce en la misma.

 

código de operación

 

Una computadora en su lenguaje máquina puede tener instrucciones de las anteriores, según sea su arquitectura.

1.10. MODOS DE DIRECCIONAMIENTO

En las instrucciones rara vez suelen almacenar el dato propiamente dicho, en la mayoría de los casos indican el lugar donde se halla el dato. Se llama direc- cionamiento de una instrucción al modo de indicar en la misma el lugar donde es- tá situado el dato que va a intervenir en ella. Los direccionamientos utilizados en las instrucciones son los siguientes:

_______________________________________________________________________________

10

____________________________________________________________________________

Direccionamiento inmediato: en él, el dato a utilizar se halla en la propia instrucción, en el acumulador o en la pila.

Direccionamiento directo: en este caso la instrucción contiene la direc- ción de memoria central donde se encuentra el dato.

Direccionamiento indirecto: la instrucción contiene la dirección de me- moria central donde se encuentra la dirección de memoria que contiene el dato.

Direccionamiento indexado: en él, la dirección de memoria central don- de se encuentra el dato, se obtiene sumándole a la dirección que lleva la instrucción una cantidad, que se encuentra en un registro especial llama- do índice.

1.11. LOS LENGUAJES DE PROGRAMACIÓN

Para poder desarrollar las capacidades del hardware, se requirió la creación de códigos por medio de los cuales hacer que la computadora ejecute una serie de órdenes. A este conjunto de códigos se denomina lenguaje.

Un lenguaje de programación es una notación para escribir programas, a través de los cuales el usuario se puede comunicar con el hardware y dar así las órdenes adecuadas para la realización de un determinado proceso. Un lenguaje está definido por una gramática o conjunto de reglas que se aplican a un alfabeto constituido por el conjunto de símbolos utilizados.

Los lenguajes se clasifican en distintos niveles y estos niveles no indican la capacidad del lenguaje, sino cuánto se aproximan al lenguaje del microprocesa- dor o al del ser humano.

Cuando se habla de lenguajes de bajo nivel significa que el lenguaje es de fácil comprensión para el procesador y ocupa poco lugar en memoria, pero es de muy difícil programación para el hombre.

Al definir a un lenguaje como de alto nivel, significa que el mismo es de fácil de programación, pero de difícil acceso al procesador (ya que tiene que ser tra- ducido a lenguaje de máquina por uno o más programas traductores).

Es decir, que según se utilice un nivel u otro, este vendrá acompañado por

sus pros o contras: un bajo nivel es difícil de programar, pero óptimo en cuanto al uso de los recursos y un alto nivel es fácil de programar, pero con un gran uso de recursos en etapas intermedias.

En el la Tabla 1.2 se presenta la evolución de los distintos lenguajes:

Periodo

Influencias

Lenguajes

1950 - 1955

Ordenadores primitivos

Lenguajes ensamblador. Lenguajes experimentales de alto nivel

     

_______________________________________________________________________________

11

____________________________________________________________________________

 

Ordenadores pequeños, caros y lentos

FORTRAN

  • 1956 - 1960

Cintas magnéticas. Compiladores e intérpretes Optimización del código.

ALGOL 58 y 60 COBOL LISP

 

Ordenadores grandes y caros

FORTRAN IV

  • 1961 - 1965

Discos magnéticos Sistemas operativos Lenguajes de propósito general.

COBOL 61 Extendido ALGOL 60 Revisado APL (como notación sólo)

  • 1966 - 1970

Ordenadores de diferentes tamaños, velo- cidades, y costos. Sistemas caros de almacenamiento masivo de datos. Sistemas operativos multitarea e interacti- vos.

PL/I FORTRAN 66 (estándar) COBOL 65 (estándar) ALGOL 68 SIMULA 67 BASIC

Compiladores con optimización. Lenguajes estándar, flexibles y generales.

APL/360

 

Micro ordenadores.

PASCAL

Sistemas pequeños y baratos de almace-

COBOL 74

  • 1971 - 1975

namiento masivo de datos. Programación estructurada. Ingeniería del software. Lenguajes sencillos.

PL/I

 

Ordenadores baratos y potentes.

ADA

Sistemas distribuidos.

FORTRAN 77

Programación interactiva.

PROLOG

  • 1976 - 1980

Abstracción de datos. Programación con fiabilidad y fácil mante- nimiento.

C

 

Ordenadores más baratos y potentes. Mayor abstracción de datos.

Smalltalk OOCOBOL

Menor costo de memorias

C++

1980

Programación Orientada o Objetos

Objective C Object Pascal (Delphi) Visual Basic

     

Tabla 1.2: Evolución de los lenguajes

Los lenguajes de programación se clasifican en:

De Bajo nivel (Lenguaje máquina) Intermedios (Lenguaje ensamblador), C De Alto nivel: de Gestión, Científicos, de Propósito general y específicos

Lenguaje de máquina

El lenguaje de máquina es el único que entiende directamente la computado- ra, utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1, denomi- nados bits (abreviatura inglesa de dígitos binarios).

_______________________________________________________________________________

12

____________________________________________________________________________

Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros len- guajes más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer errores.

Ejemplo:

Binario

Hexadecimal (Equivalente)

  • 0000 01 A1

0001

1010

0001

  • 1000 89 9A

1001

1001

1010

  • 0011 3A 9C

1010

1001

1100

  • 0111 74 70

0100

0111

0000

  • 1110 E9 20

1001

0010

0000

Lenguaje ensamblador

El lenguaje ensamblador es el primer intento de sustituir el lenguaje máquina por otro más similar a los utilizados por las personas.

En este lenguaje cada instrucción equivale a una instrucción en lenguaje máquina, utilizando para su escritura palabras mnemotécnicas en lugar de cade- nas de bits.

Ejemplo:

INICIO:

ADD

B, 1

MOV

A, E

CMP

A, B

JE

FIN

JMP

INICIO

FIN :

END

Este lenguaje presenta la mayoría de los inconvenientes del lenguaje má- quina:

Cada modelo de computadora tiene un lenguaje ensamblador propio, dife- rente del de las demás, por lo cual un programa sólo puede utilizarse en la máquina para la cual se programó.

El programador debe conocer perfectamente el hardware del equipo, ya que maneja directamente las posiciones de la memoria, los registros del procesador y demás elementos físicos.

Todas las instrucciones son elementales, es decir, en el programa se de- ben describir con el máximo detalle todas las operaciones que se han de llevar a cabo en la máquina para la realización de cualquier proceso.

Por otro lado, tanto el lenguaje máquina como el ensamblador gozan de la ventaja de mínima ocupación de memoria y mínimo tiempo de ejecución en com- paración con el resultado de la compilación del programa equivalente escrito en otros lenguajes.

_______________________________________________________________________________

13

____________________________________________________________________________

Lenguajes de alto nivel

Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con posterioridad a los anteriores, con los siguientes objetivos, entre otros:

Lograr independencia de la máquina, pudiéndose utilizar un mismo pro- grama en diferentes equipos, con la única condición de disponer de un programa traductor o compilador, que lo suministra el fabricante, para ob- tener el programa ejecutable en lenguaje binario de la máquina que se trate. Además, no se necesita conocer el hardware específico de dicha máquina.

Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma más sencilla, eliminando muchas de las posibilidades de cometer errores que se daban en el uso del lenguaje máquina, ya que se utilizan palabras (en inglés) en lugar de cadenas de símbolos sin nin- gún significado aparente.

Incluir rutinas de uso frecuente como son las de entrada/salida, funciones matemáticas, manejo de tablas, etc., que figuran en una especie de libre- ría del lenguaje, de tal manera que se pueden utilizar siempre que se quieran sin necesidad de programarlas cada vez.

Se puede decir, que el principal problema que presentan los lenguajes de al- to nivel es la gran cantidad que existe actualmente en uso, tales como: FOR- TRAN, LISP, ALGOL, COBOL, APL, SNOBOL, PROLOG, MODULA2, ALGOL68, PASCAL, SIMULA67, ADA, C++, LIS, EUCLID, BASIC, etc., además de las dife- rentes versiones o dialectos que se han desarrollado de algunos casos.

FORTRAN

Su nombre es la abreviatura de Fórmula Translator (traductor de fórmulas), fue definido alrededor del año 1955 en los Estados Unidos por la compañía IBM. Es el más antiguo de los lenguajes de alto nivel, pues antes de su aparición todos los programas se escribían en lenguaje ensamblador o en lenguaje de máquina.

Es un lenguaje especializado en aplicaciones técnicas y científicas, que se caracteriza por su potencia en los cálculos matemáticos, pero está limitado en las aplicaciones de gestión, manejo de archivos, tratamiento de cadenas de caracte- res y edición de informes.

A lo largo de su existencia han aparecido diferentes versiones, entre las que destaca la realizada en 1966 por ANSI (American National Standard Institute) en la que se definieron nuevas reglas del lenguaje y se efectuó la independencia del mismo con respecto a la máquina, es decir, comenzó la transportabilidad del len- guaje. Esta versión se denominó FORTRAN IV o FORTRAN 66.

En 1977, apareció una nueva versión más evolucionada que se llamó FOR- TRAN V o FORTRAN 77. Esta versión está reflejada en el documento «ANSI X3.9-1978: Programming Language FORTRAN» y define dos niveles del lenguaje denominados FORTRAN 77 completo y FORTRAN 77 básico, siendo el segundo un subconjunto del primero. Esta última versión incluye además instrucciones pa- ra el manejo de cadenas de caracteres y de archivos, así como otras para la utili- zación de técnicas de programación estructurada. Estas características hacen que el lenguaje también sea válido para determinadas aplicaciones de gestión.

_______________________________________________________________________________

14

____________________________________________________________________________

COBOL

Es el lenguaje más usado en las aplicaciones de gestión, creado en 1960 por un comité denominado CODASYL, patrocinado por el Departamento de De- fensa de los Estados Unidos, a fin de disponer de un lenguaje universal para apli- caciones comerciales como expresa su nombre: COmmon Business Oriented Language.

Entre sus características se puede citar su parecido al lenguaje natural (in- glés), es auto-documentado y tiene gran capacidad en el manejo de archivos, así como en la edición de informes escritos.

Entre sus inconvenientes están sus reglas rígidas de formatos de escritura, la necesidad de describir todos los elementos al máximo detalle, la extensión ex- cesiva de sus sentencias e incluso la duplicación en algunos casos, la inexistencia de funciones matemáticas y, por último, su no adecuación a las técnicas de pro- gramación estructurada.

PL/1

Fue creado a comienzos de los años 60 por IBM para ser usado en sus equipos del sistema 360. El PL/1 (Programming Language) se desarrolló inspi- rándose en los lenguajes ALGOL, COBOL y FORTRAN, tomando las mejores ca- racterísticas de los anteriores y añadiendo algunas nuevas, con el objetivo de ob- tener un lenguaje lo más general posible, útil para aplicaciones técnico-científicas, comerciales, de procesamiento de textos, de bases de datos y de programación de sistemas.

Entre sus novedades está su gran libertad en el formato de escritura de los programas, además soporta la programación estructurada y el diseño modular. No obstante, no ha superado a sus progenitores en sus aplicaciones específicas de- bido en parte a su amplitud y por ello, al tamaño de su compilador, que hasta aho- ra sólo se podía instalar en grandes equipos.

BASIC

Fue diseñado por los profesores John G. Kemeny y Thomas E. Kurtz del Dartmouth College en 1965 con el objetivo principal de conseguir un lenguaje fácil de aprender para los principiantes, como se indica en su nombre Benginner’s All- purpose Symbolic Instruction Code (Código de instrucción simbólico de propósito general para principiantes).

Entre sus principales novedades están las de ser un lenguaje interpretado y de uso conversacional, útil para aplicaciones técnicas y de gestión. Estas caracte- rísticas, unidas a la popularización de las microcomputadoras y computadoras personales, ha hecho que su utilización se haya extendido enormemente, a la vez que ha propiciado el surgimiento de una gran diversidad de versiones que extien- den y adaptan a necesidades particulares el lenguaje original. Hoy día existe una multitud de intérpretes y compiladores del lenguaje.

PASCAL

Fue creado por el matemático suizo Niklaus Wirth en 1970, basándose en el lenguaje AL-GOL, en cuyo diseño había participado en los años 60. Su nombre

_______________________________________________________________________________

15

____________________________________________________________________________

proviene del filósofo y matemático francés del siglo XVII Blaise Pascal, que inven- tó la primera máquina de tipo mecánico para sumar.

Aunque en principio la idea del diseñador era proporcionar un lenguaje ade- cuado para la enseñanza de los conceptos y técnicas de programación, con el tiempo ha llegado a ser un lenguaje ampliamente utilizado en todo tipo de aplica- ciones, poseyendo grandes facilidades para la programación de sistemas y el di- seño de gráficos.

Aporta los conceptos de tipo de datos, programación estructurada y diseño descendente, entre otros, además de haberse convertido en predecesor de otros lenguajes más modernos, como MODULA-2 y ADA.

C

Fue creado en 1972 por Dennis Ritchie a partir del trabajo elaborado por su colega de los laboratorios Bell Telephone, Ken Thompson. Estos habían diseñado con anterioridad el sistema operativo UNIX, y su intención al desarrollar el lengua- je C fue la de conseguir un lenguaje idóneo para la programación de sistemas que fuese independiente de la máquina con el cual escribir su sistema UNIX.

Aunque fue diseñado inicialmente para la programación de sistemas, poste- riormente su uso se extendió a aplicaciones técnico-científicas, de bases de da- tos, de proceso de textos, etc.

La utilización óptima de este lenguaje se consigue dentro de su entorno na- tural, que es el sistema operativo UNIX. Entre sus características destaca el uso de programación estructurada para resolver tareas de bajo nivel, así como la am- plia librería de rutinas de que dispone.

ADA

Es el último intento de obtener un único lenguaje para todo tipo de aplicacio- nes e incluye los últimos avances en técnicas de programación. Su diseño fue encargado por el Departamento de Defensa de los Estados Unidos a la empresa Honeywell-Bull después de una selección rigurosa entre varias propuestas reali- zadas sobre una serie de requerimientos del lenguaje y de haber evaluado nega- tivamente veintitrés lenguajes existentes. De éstos se seleccionaron como base para la creación del nuevo lenguaje el PASCAL, el ALGOL y el PL/1.

La estandarización del lenguaje se publicó en 1983 con el nombre de ADA en honor de la considerada primera programadora de la historia Augusta Ada By- ron, condesa de Lovelace.

Entre las características del lenguaje se encuentran la compilación separa- da, los tipos abstractos de datos, programación concurrente, programación estruc- turada, libertad de formatos de escritura, etc., presentando como principal incon- veniente su gran extensión.

1.11.1. Intérpretes y Compiladores

Como ya se ha dicho, el microprocesador sólo entiende lenguaje de máquina (código binario). Para que un programa escrito en un cierto lenguaje sea traducido a lenguaje binario hay dos formas dependiendo del lenguaje. Estos dos métodos para “traducir” los lenguajes de programación de alto nivel al binario son median- te:

_______________________________________________________________________________

16

____________________________________________________________________________

Intérprete: Analiza el programa fuente y lo ejecuta directamente, sin generar ningún código equivalente. Su acción es equivalente a la de un intérprete humano, que traduce las frases que escucha una tras otra, sin producir ningún escrito permanente. Los Intérpretes y los compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios:

Un intérprete facilita la búsqueda de errores, pues la ejecución de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables por ejemplo). Además, el pro- grama puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución.

Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar código contenido en una variable en for- ma de cadenas de caracteres. Usualmente, este tipo de instruccio- nes es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un in- térprete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de opera- dores.

     
 

Programa fuente

 
 
Programa fuente Intérprete Traducción y ejecución línea a línea
 
 

Intérprete

 
 
Programa fuente Intérprete Traducción y ejecución línea a línea
 
 

Traducción y ejecución línea a línea

 

Compilador: Analiza el programa fuente y lo traduce a otro equiva- lente escrito en otro lenguaje (por ejemplo, en el lenguaje de la má- quina). Su acción equivale a la de un traductor humano, que toma un libro y produce otro equivalente escrito en otra lengua.

Un compilador suele generar programas más rápidos y eficientes, ya que el análisis del lenguaje fuente se hace una sola vez, durante la generación del programa equivalente. En cambio, un intérprete se ve obligado generalmente a analizar cada instrucción tantas veces co- mo se ejecute (incluso miles o millones de veces).

   
 

Programa fuente

 
Programa fuente Compilador (Traductor) Programa Objeto
 

Compilador

(Traductor)

 
Programa fuente Compilador (Traductor) Programa Objeto
 

Programa Objeto

 
Programa fuente Compilador (Traductor) Programa Objeto

_______________________________________________________________________________

17

____________________________________________________________________________

 

Montador

 
Montador Programa ejecutable en lenguaje de máquina
 

Programa ejecutable en lenguaje de máquina

El programa objeto obtenido normalmente no se traduce al lenguaje de máquina sino a ensamblador. Para conseguir el programa en lenguaje de máquina original se debe utilizar un programa llamado montador o enlazador (linker). El proceso de montaje produce un programa en lenguaje de máqui- na directamente ejecutable.

RESUMEN

En este Capítulo se describieron las partes principales un Sistemas Informático. Se presentaron las partes fundamentales de una Computadora Personal y de ca- da una de ellas se resumieron las funciones principales. Se presentaron y se describieron los principales lenguajes de programación.

CUESTIONARIO DEL CAPÍTULO 1

1- Indique la diferencia entre unidad y soporte. 2- Nombre un soporte anterior a la era informática. 3- Nombre un soporte óptico y explique cuál es su unidad asociada. 4- Mencione tres unidades de E/S. 5- Nombre dos soportes que puedan ser utilizados en unidades de E/S. 6- Enumere las partes de la Unidad de Control. 7- Enumere las partes de la Unidad Arimético Lógica. 8- Nombre los distintos tipos de direccionamiento. 9- Explique en qué consisten las instrucciones de dos operandos. 10- Describa las partes que componen la memoria RAM. 11- Detalle los pasos a seguir para leer un dato en memoria. 12- Investigue y explique sintéticamente cómo funciona un disco duro.

_______________________________________________________________________________

18

____________________________________________________________________________

2

SISTEMAS DE NUMERACIÓN

En este capítulo se presentan las diferentes formas de representación de la infor- mación. Para ello, se parte de los sistemas de numeración básicos y sus conver- siones, con numerosos ejercicios resueltos. El objetivo es que el estudiante pueda llegar a interpretar cómo se trata la información en el sistema computacional.

2.1. EL SISTEMA DECIMAL

El primer sistema de numeración del cual se tiene conocimiento fue el siste- ma egipcio, posteriormente a él surgieron el romano, el maya, el chino, el indio, el árabe original hasta llegar al decimal actual

El sistema decimal es un sistema posicional, ya que el significado de un símbolo depende fundamentalmente de su posición relativa al símbolo coma (,), denominado coma decimal, que en caso de ausencia se supone colocada implíci- tamente a la derecha.

Utiliza como base el 10, que corresponde al número de símbolos que com- prenden para la representación de cantidades; estos símbolos (también denomi- nados dígitos) son:

0

1

2

3

4

5

6

7

8

9 1

Una determinada cifra, que se denominará número decimal, se puede expresar de la siguiente forma:

 

n

N o =

Σ

(dígito) i

* (b) I-1

i= -d

Donde:

base

= 10

=

i

posición respecto a la coma

d

= número de dígitos a la derecha de la coma,

= número de dígitos a la izquierda de la coma - 1, dígito = cada uno de los que componen el número

n

La fórmula responde al Teorema Fundamental de la Numeración que se verá en el siguiente párrafo.

1 En todo sistema de numeración la base no aparece como dígito. _______________________________________________________________________________

19

____________________________________________________________________________

El sistema decimal es un sistema posicional como ya se ha dicho, ya que el mismo dígito puede variar su valor de acuerdo a su posición.

Ejemplo:

1000 mil

100 cien

10 diez

1

uno

0,1 un décimo

0,01 un centésimo

2.2. EL SISTEMA BINARIO

Por razones técnicas, la mayoría de los circuitos eléctricos y electrónicos que conforman una computadora sólo puede detectar la presencia o ausencia de ten- sión en el circuito. Si a la presencia de tensión en un punto del circuito se le asig- na el valor 1 y a la ausencia de la misma el valor 0 (a esta lógica se la denomina lógica positiva y al caso contrario, se denomina lógica negativa).

Por esta razón debido a que el hardware por el momento sólo reconoce estos dos estados fue necesario crear un sistema de numeración basado en estos dos valores (0, 1), al cual se lo denominó binario, y cuya base por lo tanto es 2 (nú- mero de dígitos del sistema).

En computación cada dígito

de un número representado en este sistema se

denomina bit (contracción de binary digit).

Como múltiplos del bit se hallan:

B (10110110)

 

8 bits Byte (palabra) 2 1024 bytes 1 kilobyte

KB

1024 bytes

1024 KB

1 Megabyte

MB

1048576 bytes

1024 MB

1 Gigabyte

GB

1073741824 bytes

1024 GB

1 Terabyte

TB

1099511627776 bytes

Hay dos cosas que tener en cuenta:

La B de byte es siempre mayúscula, ya que Kb significa Kbit unidad utilizada en las memorias.

En el sistema de numeración decimal los múltiplos son potencias

10 (1K 1000 unidades y 1M 1000 K), en el binario es:

2 10

= 1024.

2.2.1. OPERACIONES CON BINARIOS

Tanto la suma como la multiplicación son semejantes a la decimal con la di- ferencia que se manejan sólo dos dígitos, sus tablas de operación se pueden ob- servar en los siguientes esquemas

2 La idea de palabra queda de las antiguas computadoras con palabras de 8 bits, hoy día existen máquinas cuya palabra es de 16, 32, 64 bits.

_______________________________________________________________________________

20

____________________________________________________________________________

Suma Multiplicación + 0 1 * 0 1 0 0 1 0 0 0 1 1
Suma
Multiplicación
+
0
1
*
0
1
0
0
1
0
0
0
1
1
10 1
0
1
Ejemplo 2.1
1
1
1
1
1
Acarreo
1
1
0
0
1
25
+
1
0
1
0
1
1
+
43
1
0
0
0
1
0
0
68
1
1
Acarreo
1
1
0.
1
0
6,50
+
1
1
0
1.
0
1
+ 13.25
1
0
0
1
1.
1
1
19.75
1
1
0
0
1
25
*
1
0
0
1
1
*
19
1
1
0
0
1
1
1
0
0
1
1
1
0
0
1
0
0
1
1
1
0
1
1
0
1
1
475
Tanto la resta como la división son procesos que la unidad de aritmético–
lógica de la computadora no realiza, por lo tanto no se verán en forma directa.
2.3. EL SISTEMA OCTAL
Es un sistema cuya base es el número 8, es decir, utiliza 8 símbolos para la
representación de un valor cualquiera. Estos símbolos son:
0
1
2
3
4
5
6
7

Este también es un sistema posicional, de aritmética muy similar al decimal. Su utilización, comenzó como sistema de salida de las computadoras, ya que pa- ra representar un valor la cantidad de símbolos que necesita es menor que el bi- nario y la conversión entre ambos sistemas es muy sencilla de implementar como se verá más adelante.

  • 2.4. EL SISTEMA HEXADECIMAL

Es un sistema cuya base es el número 16, es decir, utiliza 16 símbolos para la representación de un valor cualquiera. Estos símbolos son:

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

Este es otro sistema posicional, con características similares al octal. Su uso fue adoptado por idénticas razones que el octal.

_______________________________________________________________________________

21

____________________________________________________________________________

2.4. CONVERSIÓN ENTRE LOS DISTINTOS SISTEMAS

Se denomina así la transformación de un valor en un sistema al equivalente en otro sistema.

  • 2.4.1. TEOREMA FUNDAMENTAL DE LA NUMERACIÓN

El teorema fundamental de la numeración dice:

“El valor en el sistema decimal de una cantidad expresada en otro sis- tema cualquiera de numeración, viene dado por la fórmula:

...

+ X 4 *B 4 + X 3 *B 3 + X 2 *B 2 + X 1 *B 1 + X 0 *B 0 + X -1 *B -1 + X -2 *B -2 + X -3 *B -3 +

...

donde X es el dígito y B la base.

Ejemplo 2.1:

Suponiendo la cantidad 3221,03 4 expresada en base 4 (ver subíndice al final de la cantidad), dicha base utiliza para representar cantidades los dígitos 0, 1, 2 y 3. ¿Cuál será el valor correspondiente en el sistema decimal?

  • 3 * 4 3 + 2 * 4 2 + 2 * 4 1 + 1 * 4 0 + 0 * 4 -1 + 3 * 4 -2 =

  • 3 * 64 + 2 * 16 + 2 * 4 + 1 * 1 + 0 * 0,25 + 3 * 0,0645 = 233,1875 El teorema aplicado a la inversa sirve para obtener el valor en una base cualquiera de un valor decimal, por medio de divisiones sucesivas por dicha base, como se verá más adelante.

    • 2.4.2. CONVERSIÓN DECIMAL A BINARIO

Para convertir un número decimal entero a binario, este debe ser dividido por dos y repetir el proceso con sus cocientes hasta que el cociente tome el valor 1. La unión de todos restos escritos en orden inverso encabezados por el último co- ciente, nos dará el valor expresado en binario.

Ejemplo 2.2: Convertir el número 174 a binario: 1 7 4 2 0 8 7 2
Ejemplo 2.2: Convertir el número 174 a binario:
1 7 4
2
0
8 7
2
1
43
2
1
21
2
1
10
2
0
5
2
1
2
2
0
1

174 10 = 10101110 2

Para convertir una fracción decimal a sistema binario, la fracción debe ser multiplicada por dos y hay que tomar la parte entera del resultado, luego, se repite el proceso con la parte fraccionaria del resultado anterior, obteniéndose una nue- va parte entera, y así sucesivamente hasta que la parte fraccionaria se haga 0

_______________________________________________________________________________

22

____________________________________________________________________________

(cero) o que se tengan suficientes decimales que permita estar debajo de un de- terminado error.

Ejemplo 2.3: Convertir el número 0,90625 a fracción binaria

0,90625 *

2

=

1,8125

 

0,8125 *

2

=

1,625

0,625 *

2

=

1,25

0,25

*

2

=

0,5

0,5

*

2

=

1,

0,90625 10 =

0,11101 2

Ejemplo 2.4: Convertir el número 0,64037 a fracción binaria

0,64037 *

2

=

1,28074

0,28074 *

2

=

0,56148

0,56148 *

2

=

1,12296

0,12296 *

2

=

0,24592

0,24592 *

2

=

0,49184

0,49184 *

2

=

0,98368

0,98368 *

2

=

1,96736

0,96736 *

2

=

1,93472

0,93472 *

2

=

1,86944

0,86944 *

2

=

1,73888

 

0, 64037 10

=

0,1010001111 2

El error en el valor es

ε

2 -10

⇒ ε ≤ 0,001. Esto es así porque se ha obte-

nido 10 unidades binarias, para mejorar la precisión se deberá obtener un mayor

número de fracciones binarias. En el caso de trabajar con un error ε

10 -3 significa que

ε ≤

2 -n igualando y

aplicando logaritmos queda 3 = n*log 2 por lo que n = 3/log 2, lo que da por

aproximación 10 unidades binarias.

Ejercitación: Pasar a binario las siguientes fracciones decimales con ε ≤ 2 -10 : 0,63965 y 0,064062.

Si se desea convertir un número que tiene parte entera y decimal a binario, se deberá operar cada parte por separado como ya se ha visto, y luego obtener la suma de los resultados.

Ejemplo 2.5: Resolver 174,90625 10

=

10101110,11101 2

2.4.3. CONVERSIÓN BINARIO A DECIMAL

Para realizar esta conversión se utiliza como base el teorema fundamental de la numeración.

El método práctico consiste en multiplicar cada uno de los términos por poten- cias crecientes de 2 a partir de la coma decimal y hacia la izquierda, y realizar la suma de las operaciones.

_______________________________________________________________________________

23

____________________________________________________________________________

Ejemplo 2.6: Pasar a decimal el binario 10101110 2

1 0 1 0 1 1 1 0 0 0 * 2 = 0 1 1
1
0
1
0
1
1
1 0
0
0
*
2
=
0
1
1
*
2
=
2
2
1
*
2
=
4
3
1
*
2
=
8
4
0
*
2
=
0
5
1
*
2
=
32
6
0
*
2
=
0
7
1
*
2
=
128
174

10101110 2 = 174 10

En los casos de números que posean parte entera y decimal se recomienda el uso del teorema fundamental de la numeración.

Ejemplo 2.7: Convertir 1101,011 2 a base 10 Para pasar a base 10 se debe hacer:

1 * 2 3 1 * 8 +

8

+

1 * 2 2

+

0 * 2 1

+

* 1

1 * 2 0 +

+

0

+

+

0 * 2 -1 1 * 0,25

0,125

+

+

1 * 2 -2 1 * 0,125

+

+

4

1 * 4 +

0

+

+

1

0

+

1

+

0

+

0,25

= 13,375

1 * 2 -3 =

=

1101,0112 = 13,37510

2.4.4. CONVERSIÓN OCTAL A BINARIO

Al ser la base del octal (8) potencia de la base binaria (2 3 ), la transformación de una base a la otra se hace en forma directa dígito a dígito. Cada dígito octal será reemplazado por 3 dígitos binarios (3 por ser la potencia que relaciona ambas bases), según la tabla que se observa a continuación:

 

Octal

Binario

 
  • 0 000

 
  • 1 001

 
  • 2 010

 
  • 3 011

 
  • 4 100

 
  • 5 101

 
  • 6 110

 
  • 7 111

_______________________________________________________________________________

24

____________________________________________________________________________

Ejemplo 2.8: Convertir a binario el número 276,534 8

   
  • 2 5

7

6,

 

3

4

 
   
  • 010 101

111

110,

 

011

100

 

276,534 8 = 10111110,1010111 2

Como se puede ver los ceros al comienzo se han quitado, igual que los ce- ros que se hallan a la derecha de la coma (ya que no tienen ningún sentido).

  • 2.4.5. CONVERSIÓN BINARIO A OCTAL

 

Esta conversión es similar a la anterior, pero cada tres símbolos binarios co- rresponde uno octal. Para realizar correctamente esta conversión el número de dígitos a la derecha de la coma decimal debe ser múltiplo de 3 y si no lo fuera deberá agregarse al final del número tantos ceros como sea necesario. Idéntico caso será a la izquierda de la coma, en dicho caso los ceros se agregan al princi- pio del número.

Ejemplo 2. 9: Convertir el binario 10101011,0011 a octal.

 
   
  • 010 001

101

011,

 

100

 
   
  • 2 1

5

3,

 

4

Se agregan 0 (ceros) al número para permitir la correcta conversión:

 
 

10101011,0011 2 = 253,14 8

 
  • 2.4.6. CONVERSIÓN HEXADECIMAL A BINARIO

 

Por idénticas razones que en el caso anterior (16 = 2 4 ), la transformación de una base a la otra se hace en forma directa dígito a dígito. Cada dígito hexadeci- mal se debe reemplazar por 4 dígitos binarios (4 por ser la potencia que relaciona ambas bases), según la tabla que se tiene a continuación:

     

Hexadecimal

 

Binario

 

Hexadecimal

Binario

 
   

0

 

0000

 

8

1000

   

1

 

0001

 

9

1001

   

2

 

0010

 

A

1010

   

3

 

0011

 

B

1011

   

4

 

0100

 

C

1100

   

5

 

0101

 

D

1101

   

6

 

0110

 

E

1110

   

7

 

0111

 

F

1111

Ejemplo 2.10: Convertir a binario el número 5A8,39C 16

 
   
  • 5 3

A

8,

 

9

C

 

0101

1010

1000,

0011

1001

1100

_______________________________________________________________________________

25

____________________________________________________________________________

5A8,39C 16 = 10110101000,0011100111 2

Como se puede ver otra vez los ceros al comienzo se han quitado, igual que los ceros que se hallan a la derecha de la coma ya que no tienen sentido.

  • 2.4.7. CONVERSIÓN BINARIO A HEXADECIMAL

Esta conversión es similar a la conversión a octal, pero en lugar de tres, son cuatro símbolos binarios los que corresponde a un hexadecimal.

Para realizar correctamente esta conversión el número de dígitos a la de- recha de la coma decimal debe ser múltiplo de 4, y si no lo fuera deberá agregar- se al final del número tantos ceros como sea necesario. Idéntico caso será a la izquierda de la coma, en dicho caso los ceros se agregan al principio del número.

Ejemplo 2.11: Convertir el binario 1010101011,00111 a hexadecimal.

 

0010

1010

1011,

0011

1000

 

2

A

B,

3

8

0 cero agregado al número para permitir la correcta conversión. 1010101011,00111 2 = 2AB,38 816

  • 2.4.8. CONVERSIÓN DECIMAL A OCTAL O HEXADECIMAL

Para cualquiera de estos dos casos se hará en forma similar a la explicada para convertir de decimal a binario, pero se deberá tener en cuenta que la base ya no es 2, sino 8 o 16 según corresponda. (Dividir por 8 ó 16)

  • 2.4.9. CONVERSIÓN OCTAL O HEXADECIMAL A DECIMAL

Para cualquiera de estos dos casos se deberá usar el teorema fundamental de la numeración, teniendo en cuenta base que corresponda (8 ó 16,según el ca- so).

2.4.10. CONVERSIÓN OCTAL A HEXADECIMAL O HEXADECIMAL A OCTAL.

Estas conversiones no son posibles en una forma directa. Para realizar cual- quiera de ellas se deberá usar el pasaje a otra base como paso intermedio.

Por ejemplo octal decimal hexadecimal

octal binario hexadecimal

Se recomienda como metodología de trabajo esta última, porque al ser las operaciones de conversión más sencillas disminuye la probabilidad de error. Además no existe la posibilidad de errores de redondeo.

2.5. REPRESENTACIÓN INTERNA DE LA INFORMACIÓN

Toda información que administra el ordenador como ya se dicho se almace- nará en forma binaria, sin importar si es un número (entero, real, racional o com- plejo), un carácter (dígito, letra, símbolo), música o imágenes: En cada caso se

_______________________________________________________________________________

26

____________________________________________________________________________

almacenará en un formato distinto y aún para un mismo tipo de dato se podrá al- macenar en un formato distinto según sea necesario.

2.6. REPRESENTACIÓN DE NÚMEROS

La representación en una computadora de un número entero y uno real es distinta, y aún para cada tipo tenemos distintas representaciones según el rango

de valores a representar: El número de bits utilizados puede ser 8, 16, 32, 64 o

sea 1, 2, 3, 4 ... kivtz (2000). 3

Bytes. Para este tema y los siguientes se puede consultar a Mar-

2.6.1. REPRESENTACIÓN DE NÚMEROS ENTEROS

Existen 5 formas de representar un número entero en una computadora (to- dos en sistema binario), ellas son:

Binario puro sin signo (BP)

Módulo y signo (MS)

Complemento a 1 (C-1)

Complemento a 2 (C-2)

Exceso a 2 elevado a la N -1

En todos los casos se considera que se tiene un número limitado de dígitos pa- ra cada elemento numérico.

2.6.1.1. Binario puro sin signo (BP)

Este método en general para representar valores positivos que pueden alma- cenar en un Byte o sea 8 bits.

Por ejemplo:

 

Mantisa

19 se representa en 8 bits como

00010011

El conjunto de valores que se puede representar por un método determinado se conoce como rango de la representación. Para módulo el rango de represen- tación para 8 dígitos es:

 

x

≤≤≤≤ 2 N -1

Para 1 Byte (8 bits) es

0

x

255

Para 2 Byte (16 bits) es

0 x

65535

Para 4 Byte (32 bits) es

0

x 4294967295

2.6.1.2. Módulo y signo (MS)

En este método se utiliza el primer bit a la izquierda como signo, 0 si es positivo y uno si es negativo. Los restantes 7, 15, etc., representan el módulo.

Por ejemplo:

 

Signo

Mantisa

19 se representa en 8 bits como

0

0010011

-19

1

0010011

3 Introduction to Logic Design. Mc Graw Hill. _______________________________________________________________________________

27

____________________________________________________________________________

 

19 se representa en 16 bits como

0

000000000010011

-19

1

000000000010011

0 se representa en 8 bits como

0

0000000

-

0

1

0000000

El conjunto de valores que se puede representar por un método determinado se conoce como rango de la representación. Para módulo y signo, el rango de representación para N dígitos es:

- 2 N-1 +1

≤≤≤≤ x ≤≤≤≤ 2 N-1 -1

Para 1 Byte (8 bits) es

-127

x

127

Para 2 Byte (16 bits) es

-32767

x

32767

Para 4 Byte (32 bits) es

-2147483647 x 2147483647

Este método tiene la ventaja de poseer un rango simétrico, pero la desventa- ja es que posee dos representaciones para el número 0

2.6.1.3. Complemento a 1 (C-1).

Para representar un número positivo se procede como en el de MS (módulo y signo). Pero, en el caso de los números negativos, se obtiene complementando al positivo (reemplazando cada 1 por 0 y viceversa). Por ejemplo:

 

19

se representa en 8 bits como

00010011

-19

11101100

19 se representa en 16 bits como

0000000000010011

-19

1111111111101100

 

0 se representa en 16 bits como

0000000000000000

 

-

0

1111111111111111

Para el complemento a 1, el rango de representación para N dígitos es:

 

- 2 N-1 +1

x

2 N-1 -1

 

Para 1 Byte (8 bits) es

-127

x

127

Para 2 Byte (16 bits) es

-32767

x

32767

 

Para 4 Byte (32 bits) es

-2147483647 x 2147483647

 

Este método presenta las mismas ventajas y desventajas que el anterior.

2.6.1.4. Complemento a 2 (C-2)

 

Este método es similar al anterior, la representación de los números positivos es igual a la anterior, pero para los negativos se obtiene en dos pasos:

– Se complementa a 1 – Al resultado se le suma 1

 

Por ejemplo:

 

19

se representa en 8 bits como

0001 0011

-19

1110 1100

C-1

 

+

1

 

-19

1110 1101

C-2

_______________________________________________________________________________

28

____________________________________________________________________________

Para complemento a 2 el rango de representación para N dígitos es:

Para 1 Byte (8 bits) es Para 2 Byte (16 bits) es Para 4 Byte (32 bits) es

- 2 N-1

x

2 N-1 -1

-128

x

127

-32768

x

32767

-2147483648 x 2147483647

Presenta dos ventajas: una es que tiene una única representación para 0, y

la otra es que en lugar de hacer Se puede demostrar:

A – B, se puede hacer A + B C-2 .

____________________________________________________________________________ Para complemento a 2 el rango de representación para N dígitos es: Para 1 Byte

A – B = A + B C donde B C es el complemento a la base del número B. Esta metodología de trabajo se implementó porque la unidad aritmético lógi- ca del microprocesador sólo suma, no resta. 2.6.1.5. Exceso a 2 elevado a la N –1

En este método no hay bit de signo, todos los bits se utilizan para represen- tar el valor del número más el exceso, y para N bits viene dado por 2 N-1 , que para una representación de 8 bits es 128.

B Exceso = Exceso + B

Para obtener un número en un exceso dado, se realiza la suma algebraica del exceso más el número y sólo se pueden representar valores en módulo meno- res o iguales al exceso.

Ejemplo:

Para representar a 19 en exceso a 128 será:

19 Exc128 = Exceso(128) + 19

Exceso 128

10000000

  • 19 + 00010011

  • 19 en exceso 128

10010011

Para representar a -19 en exceso a 128 será:

-19 Exc128 = Exceso(128) + (-19) Exceso 128

10000000

-19 -

00010011

-19 en exceso 128

01101101

En este método el 0 tiene una única representación, el rango de representa- ción es asimétrico.

Para complemento a 2 el rango de representación para N dígitos es:

- 2 N-1

≤≤≤≤ x ≤≤≤≤ 2 N-1 -1

Para 1 Byte (8 bits) es

-128

x

127

Para 2 Byte (16 bits) es

-32768

x

32767

_______________________________________________________________________________

29

____________________________________________________________________________

Para 4 Byte (32 bits) es

-2147483648 x 2147483647

La representación en exceso para un número cualquiera es igual a la repre- sentación en complemento a dos, pero el valor del primer bit de la izquierda se invierte.

  • 2.6.2. DESBORDAMIENTO (OVERFLOW)

Esta condición (overflow) se puede producir cuando se suman dos números con un determinado método de representación y el resultado no puede ser repre- sentado por el método, obteniéndose un resultado erróneo.

Para el ejemplo se usará la notación de MS (mantisa y signo) Ejemplo:

 

52

0

0

1

1

0 1 0 0

52

+

97

+

0 1 1 0 0 0 0 1

97

149

1 0 0 1

0 1 0 1

-21

2.7. REPRESENTACIÓN DE NÚMEROS REALES

  • 2.7.1. Precisión Finita de la Información

Muchos estudiantes consideran que la computadora puede trabajar con nú- meros de cifras infinitas, siendo este uno de los tantos preconceptos que se pue- de detectar en los alumnos y, que debido a su falsedad se debe desterrar.

Toda computadora cuenta con un número finito de Bytes para poder alma- cenar una cifra. Este número puede ser de 1, 2, 4, 6, 8, 10 Bytes, pero nunca infi- nito. Por lo tanto, sólo se podrá ingresar, procesar, almacenar y extraer un rango de valores.

Por ejemplo, para números enteros se utiliza como máximo 4 Bytes (32 bits),

siendo el rango de representación entre:

-247483648...

247483647.

  • 2.7.2. Coma Flotante

Este método nace ante la necesidad de representar números reales o ente- ros con un rango mayor que el dado por los otros métodos.

En su representación se utiliza la expresión matemática:

N = mantisa * base exponente

Por ejemplo:

  • 79436.54 = 0,7943654 * 10 5

A este proceso se lo denomina normalización.

Para estos números, se utilizan dos formas de representación: simple y do- ble precisión, pero existen otros formatos como real, extended.

Para simple precisión se utiliza 32 bits (4 Bytes), en el segundo caso 64 bits (8 Bytes).

(Todos los elementos en computación se comienzan a numerar por 0) El esquema para ambos casos es como el de la tabla debajo.

_______________________________________________________________________________

30

____________________________________________________________________________

 

Simple Precisión

 

Doble Precisión

 

C. de bits

B. Inicial

B. Final

 

C. de bits

B. Inicial

B. Final

Signo

1

31

   

1

63

 

Exponente

8

23

30

 

11

52

62

Mantisa

23

 
  • 0 52

22

   

0

51

Ejemplos de Pasajes de Decimal a Flotante Pasar 57 a Flotante

1) Pasar 57 a Binario

57 111001

2) Normalizar el binario

111001 0,111001 * 26

3) Pasar el exponente a binario

  • 6 110

4) Si se trabaja en Simple Precisión (SP) se lo expresa como excedente a 10000000 (por los 8 bits), si es en Doble Precisión como excedente a 10000000000 (por los 11 bits). El exponente quedará así:

SP

10000110

DP

10000000110

5) Como el número es positivo el bit de signo es cero: 0 El número queda estructurado de la siguiente manera

 

Signo

Exponente

Mantisa

SP

0

10000110

111001

6) Se deben agregar ceros hasta completar los 24 bits El número en cuestión queda:

0100 0011 0111 0010 0000 0000 7) Luego, se pasa a HEXADECIMAL, quedando:

____________________________________________________________________________ Simple Precisión Doble Precisión C. de bits B. Inicial B. Final C. de bits B.
  • 4372 16

En el caso de - 57

1) Como el número es negativo el bit de signo es 1 El número queda estructurado de la siguiente manera:

 

Signo

Exponente

Mantisa

SP

1

10000110

111001

Se debe agregar ceros hasta completar los 24 bits El número en cuestión queda 1100 0011 0111 0010 0000 0000 2) Se pasa a HEXADECIMAL y queda:

____________________________________________________________________________ Simple Precisión Doble Precisión C. de bits B. Inicial B. Final C. de bits B.

_______________________________________________________________________________

31

____________________________________________________________________________

C372 16

Ejemplo de exponente negativo

Para el número 0,13671875 se repiten los pasos anteriores. Se pasa a binario:

0,13671875 0,00100011 Se normaliza:

0,00100011 2 0,100011 2 *2 -2 Se pasa el módulo de la potencia a binario

2

102

Si se trabaja en Simple Precisión (SP) se expreso como excedente a 10000000 El exponente queda así:

SP

01111110

Como el número es positivo el bit de signo es 0 El número queda estructurado de la siguiente manera:

 

Signo

Exponente

Mantisa

DP

0

01111110

100011

Se deben agregar ceros hasta completar los 24 bits El número en cuestión queda:

 

0011

1111 0100 0110

 

(no se completó con ceros porque su representación en Hexadecimal son 0 que no afectan al número final)

Se pasa a HEXADECIMAL y queda:

 

3F4616

Si el número fuera negativo el bit de signo es 1

 

El número quedará estructurado de la siguiente manera:

   

Signo

Exponente

Mantisa

SP

1

01111110

100011

Se deben agregar ceros hasta completar los 24 bits El número en cuestión queda:

 

1011

1111 0100 0110

Se pasa a HEXADECIMAL y queda:

 

BF4616

Si se quiere expresar el número (-0,13671875) en flotante de 64 bits, el úni- co cambio que hay que hacer, sería el exponente que ya no tiene 8 bits sino 11 bits quedando:

El número queda entonces estructurado de la siguiente manera:

 

Signo

Exponente

Mantisa

SP

1

01111111110

100011

_______________________________________________________________________________

32

____________________________________________________________________________

El número en cuestión queda:

1011 1111 1110 1000 1100 Se pasa a HEXADECIMAL y queda:

BFE8C16

Como se puede ver, el mismo número se puede representar en 32 o en 64 bits

 

32 bits

64 bits

-0,13671875

BF460000

BFE8C00000000000

Los ceros a la izquierda no son representativos, por lo que pueden o escri- birse o no.

Este método de tiene rangos de representación los cuales no incluyen el número 0 (cero). Se pueden representar números muy próximos a 0 pero no in- cluye este número.

El mayor módulo que se puede expresar en doble precisión es 1,710 * 10308, con una precisión de 15 a 16 cifras (ver transformación de fracciones de- cimales a binarios). El número más próximo a cero será 1 * 10-309.

El módulo mayor que se puede expresar en punto flotante (extended) es 1,10 * 104932.

2.8. CODIFICACIÓN ALFANUMÉRICA

Cuando se presiona una tecla cualquiera en la computadora, ésta convierte el carácter presionado en un conjunto bits. Para realizar esta transformación se utilizaron y se utilizan distintos códigos. Unos de los primeros códigos fue el denominado FIELDATA este fue un có- digo de 6 bits, el cual fue reemplazado por el código ASCII (American Standard Code for Information Interchange) que era un código de 7 bits (tenía 128 caracte- res posibles), el mismo no podía representar por ejemplo los caracteres acentua- dos.

Posteriormente apareció el código EBCDIC que fue el primer código de 8 bits y por último aparece para el ambiente de PC el ASCII extendido que también es de 8 bits (256 caracteres). Con el uso de Windows NT y la aparición de Windows 95, se creo un nuevo código denominado Unicode, el cual es un código de 16 bits lo que permite am- pliar de los 256 caracteres, a 65536. En donde los primeros 256 caracteres son los mismos que los caracteres ASCII. Este código esta aprobado por el ANSI (American National Standards Institu- te), el cual rige los estándares en informática. En todos los códigos los primeros caracteres corresponden a códigos no representables como el correspondiente al Return o a la campanilla.

_______________________________________________________________________________

33

____________________________________________________________________________

Anexo: Tabla de Conversión

 

Decimal

Binario

Octal

Hexadecimal

 

0

0000

00

0

 

1

0001

01

1

 

2

0010

02

2

 

3

0011

03

3

 

4

0100

04

4

 

5

0101

05

5

 

6

0110

06

6

 

7

0111

07

7

 

8

1000

10

8

 

9

1001

11

9

 

10

1010

12

A

 

11

1011

13

B

 

12

1100

14

C

 

13

1101

15

D

 

14

1110

16

E

 

15

1111

17

F

 

16

10000

20

10

 

17

10001

21

11

 

18

10010

22

12

 

19

10011

23

13

 

20

10100

24

14

 

21

10101

25

15

 

22

10110

26

16

 

23

10111

27

17

 

24

11000

30

18

 

25

11001

31

19

 

26

11010

32

1A

 

27

11011

33

1B

 

28

11100

34

1C

 

29

11101

35

1D

 

30

11110

36

1E

 

31

11111

37

1F

 

32

100000

40

20

RESUMEN

Se describieron 4 sistemas de numeración: decimal, binario, hexadecimal y octal y se ejemplificaron sus conversiones. Se presentaron las diferentes formas de representar la información numérica en- tera: módulo y signo, complemento a uno, complemento a dos y exceso a dos. Se definieron conceptos como el de desbordamiento (overflow), con ejemplos repre- sentativos.

_______________________________________________________________________________

34

____________________________________________________________________________

PRÁCTICA DEL CAPÍTULO 2

1 - Pasar a base 2 los siguientes números que se hallan en base 10:

 

18

25

251

465

255

-322

-176

,125

-0,625

,3125

,15625

,78125

,28125

,53125

15,28125

78,03125

-62,90625

39,0625

129,84375

-23,5625

48,234375

54,609375

91,59375

143,96875

2- Pasar los siguientes números de base 2 a base 10:

 

1101

10111

-101001

1011101

1001001

-11100111

100110001

0,10111

0,11011

0,10101

0,00101

0,10111

-,1011001

.1110011

111,101

1111,1011

1100,1101

11101,11011

10001,10101

110011.1001

101101,0101

1000111,101

1111,011001

100101,101101

3- Pasar en forma directa de base 10 a la base indicada.

25

5

347

8

653

6

976

16

35837

0,140625

8

4- Pasar en aplicando el Teorema Fundamental de la numeración de la base indicada a base 10.

5123 6

2130 4

2045 7

.5437 9

152.71 8

2C5A 16

5- Pasar los siguientes números decimales a la base indicada con un error menor o igual al indicado

Número

Base

Error

0,267

2

0,001

52,38

2

0,0001

129,64

2

0,1

163,97

8

0,0001

954,62

16

0,0001

_______________________________________________________________________________

35

____________________________________________________________________________

6- Pasar a las bases indicadas usando la propiedad de la base de potencias de otra base:

  • 32 2

8

F1 16

8

F1 16

2

A6,C32 16

8

  • 73 16

8

1010 2

16

10,10 2

8

9B,52 16

4

7- Realizar las siguientes sumas:

 
 
  • 1010 1001 2

2

 

1110 2

+

+

+

 
  • 0101 0110 2

2

 

1010 2

  • 10110 11011 2

2

10010 2

+

+

+

 
  • 10101 00110 2

2

 

10110 2

  • 7354 F1E5 16

8

3231 4

+

+

+

 
  • 1123 ABC1 16

8

 

2123 4

8- Realizar las siguientes restas:

 
 

10110

2

10101 2

11010 2

  • - -

 

-

1101

2

10011 2

10111 2

F91F 16

0334 8

1060 8

  • - -

 

-

0101 16

0137 8

1776 8

9- Realizar los siguientes productos. 0018 16

 

047 8

0018 18

x

x

X

 

100 16

 

010 8

010 18

10- Escribir en formato de 8 bits sin signo, los números que están expresados en base 10

  • 12 35

143

136

243

171

  • 67 98

189

214

275

369

_______________________________________________________________________________

36

____________________________________________________________________________

11- Pasar a base 10 los siguientes números expresados como punto fijo sin signo (8 bits)

 

10100100

01101001

01001111

10101100

 

10011110

00000101

00111000

10011010

12- Escribir en formato de 8 bits con signo, los números que están expresados en base

10

 

67

-15

114

-114

243

49

-42

-76

138

-214

75

-39

13- Pasar a base 10 los siguientes números expresados como punto fijo con signo (8 bits)

 

10100100

01101001

01001111

10101100

 

10011110

00000101

00111000

10011010

14- Escribir en formato de 16 bits sin signo, los números que están expresados en base

10

 

127

1615

56134

23103

243

7459

61356

9854

27536

4136

78654

-186

15-

Pasar a base 10 los siguientes números expresados

como

punto

fijo

sin

signo

(16 bits)

 
 

1000000000101000

 

0110100000010101

 

1001111011010111

0000000000010101

16- Escribir en formato de 16 bits con signo, los números que están expresados en base

10

5432

-9564

56134

-22784

243

-6743

-1326

-39854

-17836

-4136

78654

25469

17- Pasar

a base 10 los siguientes números expresados como punto fijo con signo

(16 bits)

  • 1000000000101000 0110100000010101

  • 1001111011010111 0000000000010101

_______________________________________________________________________________

37

____________________________________________________________________________

18- Escribir en 8 bits, en complemento a 2.

-57

-13