Datos de Máquina real Programa Datos de entrada … · Información para sacar la información...

25
Programación C++ Esp.Alexis Olvany Torres Ch Con una máquina abstracta se define el ámbito de ejecución de los programas Recursos necesarios para ejecutar un programa Organización de la memoria Segmento de código Segmento de datos estático Pila Heap (memoria dinámica) Registros del procesador Contador del programa Apuntador a la pila Acumulador Instrucción del código máquina Control de flujo Operaciones aritméticas Comparaciones Guardar y recuperar datos de memoria Máquina abstracta Tiempo de Ejecución Programa objeto Máquina real Datos de entrada Datos de salida Datos de entrada Datos de salida Programa fuente Datos de entrada Datos de salida Programa objeto Descripción abstracta del comportamiento de un programa Descripción del comportamiento de un programa independiente de máquina pero fácil de implementar (implementación interpretada) Descripción del comportamiento de un programa dependiente de máquina (implementación)

Transcript of Datos de Máquina real Programa Datos de entrada … · Información para sacar la información...

• Programación C++ Esp.Alexis Olvany Torres Ch

• Con una máquina abstracta se define el ámbito de ejecución de los

programas

– Recursos necesarios para ejecutar un programa

• Organización de la memoria

– Segmento de código

– Segmento de datos estático

– Pila

– Heap (memoria dinámica)

• Registros del procesador

– Contador del programa

– Apuntador a la pila

– Acumulador

– Instrucción del código máquina

– Control de flujo

– Operaciones aritméticas

– Comparaciones

– Guardar y recuperar datos de memoria

Compiladores I (96-97 01/03/2010 18:38) - 6.3 -

Máquina abstracta

Tiempo de Ejecución

Programa

objeto

Máquina real

Datos de

entrada

Datos de

salida

Datos de

entrada

Datos de

salida

Programa

fuente

Datos de

entrada

Datos de

salida

Programa

objeto

Descripción abstracta del comportamiento de un programa

Descripción del comportamiento de un programa

independiente de máquina pero fácil de implementar

(implementación interpretada)

Descripción del comportamiento de un programa

dependiente de máquina (implementación)

• Programación C++ Esp.Alexis Olvany Torres Ch

Máquina Abstracta

Es una maquina que existe solamente en nuestra mente o en papel. Esta

definida como un conjunto de especificaciones que describen los comandos

que la maquina obedece y lo que esta hace en respuesta a cada comando.

Estas especificaciones también definen el conjunto de datos que la máquina

acepta como entrada, y la clase de salidas que proporciona.

Una máquina abstracta se usa cuando queremos decir lo que una máquina

hace, sin mencionar absolutamente nada sobre la forma en que esta

construida. Podemos imaginarnos una máquina abstracta como una Caja

Negra, en la cual entran comandos y datos y desde la cual se puede obtener

datos de salida. En particular una máquina abstracta puede se implementada

bien sea por medio de Hardware solamente, o por una combinación de

hardware y software.

Máquina Física

Cuando una máquina abstracta es implementada en harware, sin la ayuda del

software alguno, el resultado se llama máquina física. Un computador sin

ningún tipo de software , es una máquina física.

Máquina Virtual

Cuando una máquina abstracta es implantada mediante la ejecución de un

programa en un hardware dado, el resultado se denomina máquina virtual.

Multiniveles de Maquinas

La máquina sobre la cual se implanta una máquina virtual, la máquina

subyacente, puede ser perfectamente otra maquina virtual, implementada

mediante la ejecución de un programa en otra máquina subyacente, la cual a

su vez puede ser una máquina virtual , y así sucesivamente. Es decir podemos

imaginarnos una máquina complicada como una máquina estructurada en un

número de niveles.

• Programación C++ Esp.Alexis Olvany Torres Ch

Un ejemplo concreto se presenta en la figura 1 la cual muestra la estructura de

niveles de un sistema de computación moderno.

Programas de aplicación

Software escrito por el usuario

Lenguajes de programación

Software del sistema

Sistemas operativos

Software del sistema

Lenguaje Maquina

Firmware ( microprograma)

Maquina Microprogramada Hardware (Maquina física )

Figura 1

Los sistemas operativos y procesadores de lenguajes, implantan máquinas

virtuales que sirven de "interface" a los usuarios del computador, sus funciones

básicas pueden ser definidas como funciones de traducción. Estas máquinas

virtuales sucesivamente convierten máquinas a niveles más altos, en sus

equivalentes a niveles mas bajos, hasta que, eventualmente, se llega al

computador real (máquina física).

Ningún programa puede hacer tarea alguna sin una máquina subyacente (física

o virtual) que lleve a cabo sus instrucciones. Los sistemas operativos y

procesadores de lenguajes son esencialmente traductores, desde el punto de

vista del usuario. En base a esto, la tarea mas importante de cualquier sistema

es la de asistir a los usuarios del computador, en la solución de sus problemas.

Podemos imaginarnos que cualquier programa que se ejecute en un

computador es una definición de una máquina virtual. Los programas aceptan

comandos y datos, cada comando lleva a cabo diferentes tipos de operaciones.

• Programación C++ Esp.Alexis Olvany Torres Ch

Existen dos tipos de comandos que se pueden dar a una máquina cualquiera:

1. Comandos inmediatos. Llevados a cabo inmediatamente que son

recibidos por la máquina, y cuyos resultados aparecen tan pronto como

la máquina los obtiene.

2. Comandos de programa: son almacenados en forma de secuencia de

comandos, a la cual se le llama programa. El programa completo es

ejecutado, luego de haber sido recibido, en respuesta a un comando

inmediato como Ejecute.

El conjunto de comandos de una máquina dada, forma un lenguaje de

programación. Un Programa se escribe en un Lenguaje de programación. Los

lenguajes utilizados para escribir programas de computadoras son los

lenguajes de programación y programadores son los escritores.

Conceptos básicos y terminología

Software: consiste en los programas de instrucciones (datos), que definen

para el hardware los algoritmos necesarios para la solución de problemas.

Cuando un usuario se enfrenta a un computador lo está haciendo realmente

con una maquina mucho mas compleja que la maquina física subyacente. Esta

otra máquina la conforman los programas del sistema, hechos especialmente

para hacer la comunicación hombre-máquina mas económica, facilitando así al

usuario un uso mas eficiente del sistema.

Cada vez que se ejecuta un programa en el PC, el comportamiento de este

último varía presentándose como otra máquina, que puede proporcionar

funciones y facilidades muy diferentes.

Por lo tanto es conveniente acostumbrarnos a la idea de hablar de una

máquina sin preocuparnos cómo esta construida.

• Programación C++ Esp.Alexis Olvany Torres Ch

Lenguajes de programación

Un lenguaje de programación es un sistema rotacional para describir

operaciones con computadores. Los lenguajes que favorecen a los seres

humanos se llaman de alto nivel, y aquellos orientados a la máquina, de bajo

nivel. En este sentido existen varios tipos de lenguajes de programación:

Lenguaje de máquina, ensambladores y de alto nivel.

Programa Interpretador

El intérprete es un traductor que toma un programa fuente, lo traduce y a

continuación lo ejecuta. Es una máquina virtual en forma de programa,

aceptando como entrada los comandos inmediatos para esta maquina

abstracta. El interpretador acepta el programa y los datos a ser procesados. La

salida es el resultado de procesar los datos por el programa interpretado.

Programa Traductor (Compiladores)

Un compilador es un programa que traduce los programas fuentes escritos en

lenguajes de alto nivel, a lenguaje máquina. El traductor convierte un programa

escrito en el lenguaje de una máquina abstracta en otro programa equivalente

escrito en el lenguaje de máquina subyacente, en la cual se implanta aquélla.

Sistema de Información

Introducción:

Un sistema de información es un conjunto de elementos que interactúan entre

sí con el fin de apoyar las actividades de una empresa o negocio.

El equipo computacional: el hardware necesario para que el sistema de

información pueda operar.

• Programación C++ Esp.Alexis Olvany Torres Ch

El recurso humano que interactúa con el Sistema de Información, el cual está

formado por las personas que utilizan el sistema.

Un sistema de información realiza cuatro actividades básicas:

Entrada, almacenamiento, procesamiento y salida de información.

Entrada de Información: Es el proceso mediante el cual el Sistema de

Información toma los datos que requiere para procesar la información. Las

entradas pueden ser manuales o automáticas. Las manuales son aquellas que

se proporcionan en forma directa por el usuario, mientras que las automáticas

son datos o información que provienen o son tomados de otros sistemas o

módulos. Esto último se denomina interfaces automáticas.

Las unidades típicas de entrada de datos a las computadoras son las

terminales, las cintas magnéticas, las unidades de diskette, los códigos de

barras, los escáners, la voz, los monitores sensibles al tacto, el teclado y el

mouse, entre otras.

Almacenamiento de información: El almacenamiento es una de las

actividades o capacidades más importantes que tiene una computadora, ya que

a través de esta propiedad el sistema puede recordar la información guardada

en la sección o proceso anterior. Esta información suele ser almacenada en

estructuras de información denominadas archivos. La unidad típica de

almacenamiento son los discos magnéticos o discos duros, los discos flexibles

o diskettes y los discos compactos (CD-ROM).

Procesamiento de Información: Es la capacidad del Sistema de Información

para efectuar cálculos de acuerdo con una secuencia de operaciones

preestablecida. Estos cálculos pueden efectuarse con datos introducidos

recientemente en el sistema o bien con datos que están almacenados. Esta

característica de los sistemas permite la transformación de datos fuente en

información que puede ser utilizada para la toma de decisiones, lo que hace

posible, entre otras cosas, que un tomador de decisiones genere una

proyección financiera a partir de los datos que contiene un estado de

resultados o un balance general de un año base.

• Programación C++ Esp.Alexis Olvany Torres Ch

Salida de Información: La salida es la capacidad de un Sistema de

Información para sacar la información procesada o bien datos de entrada al

exterior. Las unidades típicas de salida son las impresoras, terminales,

diskettes, cintas magnéticas, la voz, los graficadores y los plotters, entre otros.

Es importante aclarar que la salida de un Sistema de Información puede

constituir la entrada a otro Sistema de Información o módulo. En este caso,

también existe una interfase automática de salida. Por ejemplo, el Sistema de

Control de Clientes tiene una interface automática de salida con el Sistema de

Contabilidad, ya que genera las pólizas contables de los movimientos

procesales de los clientes.

A continuación se muestran las diferentes actividades que puede realizar un

Sistema de Información de Control de Clientes:

Actividades que realiza un Sistema de Información:

Entradas:

Datos generales del cliente: nombre, dirección, tipo de cliente, etc.

Políticas de créditos: límite de crédito, plazo de pago, etc.

Facturas (interface automático).

Pagos, depuraciones, etc.

Proceso:

Cálculo de antigüedad de saldos.

Cálculo de intereses moratorios.

Cálculo del saldo de un cliente.

Almacenamiento:

Movimientos del mes (pagos, depuraciones).

Catálogo de clientes.

Facturas.

• Programación C++ Esp.Alexis Olvany Torres Ch

Salidas:

Reporte de pagos.

Estados de cuenta.

Pólizas contables (interfase automática)

Consultas de saldos en pantalla de una terminal.

SISTEMA OPERATIVO

Los sistemas operativos internos fueron desarrollados sobre todo para

coordinar y trasladar estos flujos de datos que procedían de fuentes distintas,

como las unidades de disco o los coprocesadores (chips de procesamiento que

ejecutan operaciones simultáneamente con la unidad central, aunque son

diferentes).

Un sistema operativo es un programa de control principal, almacenado de

forma permanente en la memoria, que interpreta los comandos del usuario que

solicita diversos tipos de servicios, como visualización, impresión o copia de un

archivo de datos; presenta una lista de todos los archivos existentes en un

directorio o ejecuta un determinado programa, es decir, administra todos los

recursos de la unidad computacional y facilita la comunicación con el usuario.

Además, cuenta con programas especializados para diversas tareas, como son

la puesta en marcha del equipo, la interpretación de comandos, el manejo de

entrada y salida de información a través de los periféricos, acceso a discos,

procesamiento de interrupciones, administración de memoria y procesador,

entre otros.

El sistema operativo establece las reglas y parámetros para que el software

aplicativo interactúe con la computadora, ya que en lugar de hablar

directamente con el hardware, las aplicaciones hablan con el sistema operativo

y este actúa como su intérprete. Si no existiera el sistema operativo, cada

empresa desarrolladora de software tendría que crear su propio método para

que las aplicaciones graben archivos en el disco duro, desplegar textos y

gráficos en la pantalla, enviar texto a la impresora e infinidad de funciones más.

• Programación C++ Esp.Alexis Olvany Torres Ch

Algunos sistemas operativos conocidos son Windows, con versiones 95, 98,

2000, Mileniun, NT, Vista, 2007, 2010 y superiores; DOS; Netware; Unix, Linux,

entre otros.

Software de aplicación

Es un conjunto de programas diferente al software del sistema, éstos se

encargan de manipular la información que el usuario necesita procesar, son

programas que desarrollan una tarea específica y cuya finalidad es permitirle al

usuario realizar su trabajo con facilidad, rapidez, agilidad y precisión.

LOS DISPOSITIVOS DE ENTRADA/SALIDA:

Son aquellos que permiten la comunicación entre la computadora y el usuario.

1. DISPOSITIVOS DE ENTRADA:

Son aquellos que sirven para introducir datos a la computadora para su

proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la

memoria central o interna. Los dispositivos de entrada convierten la información

en señales eléctricas que se almacenan en la memoria central.

Los dispositivos de entrada típicos son los teclados, otros son: lápices ópticos,

palancas de mando (joystick), CD-ROM, discos compactos (CD), etc. Hoy en

día es muy frecuente que el usuario utilice un dispositivo de entrada llamado

ratón que mueve un puntero electrónico sobre una pantalla que facilita la

interacción usuario-máquina.

• Programación C++ Esp.Alexis Olvany Torres Ch

DISPOSITIVOS DE SALIDA:

Son los que permiten representar los resultados (salida) del proceso de datos.

El dispositivo de salida típico es la pantalla o monitor. Otros dispositivos de

salida son: impresoras (imprimen resultados en papel), trazadores gráficos

(plotters), bocinas, entre otros...

CPU

La unidad central de procesamiento, CPU (por sus siglas del inglés Central

Processor Unit), o, simplemente, el procesador. Es el componente en una

computadora digital que interpreta las instrucciones y procesa los datos

contenidos en los programas de computadora. Los CPU proporcionan la

característica fundamental de la computadora digital, la programabilidad, y son

uno de los componentes necesarios encontrados en las computadoras de

cualquier tiempo, junto con el almacenamiento primario y los dispositivos de

entrada/salida. Se conoce como microprocesador el CPU que es

manufacturado con circuitos integrados. Desde mediados de los años 1970, los

microprocesadores de un solo chip han reemplazado casi totalmente todos los

tipos de CPU, y hoy en día, el término "CPU" es aplicado usualmente a todos

los microprocesadores.

UC, Unidad de control,

La Unidad de control es el "cerebro del microprocesador". Es la encargada de

activar o desactivar los diversos componentes del microprocesador en función

de la instrucción que el microprocesador esté ejecutando y en función también

de la etapa de dicha instrucción que se esté ejecutando.

La unidad de control (UC) interpreta y ejecuta las instrucciones almacenadas

• Programación C++ Esp.Alexis Olvany Torres Ch

en la memoria principal y genera las señales de control necesarias para

ejecutarlas.

Existen dos tipos de unidades de control, las cableadas, usadas generalmente

en máquinas sencillas, y las microprogramadas, propias de máquinas más

complejas. En el primer caso, los componentes principales son el circuito de

lógica secuencial, el de control de estado, el de lógica combinacional, y el de

emisión de reconocimiento señales de control. En el segundo caso, la

microprogramación se encuentra almacenada en una micromemoria (se

accede a las mismas de manera secuencial (1, 2, ..., n), y posteriormente se

ejecuta cada una de ellas).

Unidad Logica aritmetica

La Unidad Aritmético Lógica (UAL), o Arithmetic Logic Unit (ALU), es un circuito

digital que calcula operaciones aritméticas (como adición, substracción, etc.) y

operaciones lógicas (como OR, NOT, XOR, etc.), entre dos números.

Muchos tipos de circuitos electrónicos necesitan realizar algún tipo de

operación aritmética, así que incluso el circuito dentro de un reloj digital tendrá

una ALU minúscula que se mantiene sumando 1 al tiempo actual, y se

mantiene comprobando si debe activar el pitido del temporizador, etc...

Por mucho, los más complejos circuitos electrónicos son los que están

construidos dentro de los chips de microprocesadores modernos como el

Pentium. Por lo tanto, estos procesadores tienen dentro de ellos un ALU muy

complejo y poderoso. De hecho, un microprocesador moderno (y los

mainframes) pueden tener múltiples núcleos, cada núcleo con múltiples

unidades de ejecución, cada una de ellas con múltiples ALU.

Memoria,

• Programación C++ Esp.Alexis Olvany Torres Ch

El propósito del almacenamiento es guardar datos que la computadora no esté

usando. El almacenamiento tiene tres ventajas sobre la memoria:

1. Hay más espacio en almacenamiento que en memoria.

2. El almacenamiento retiene su contenido cuando se apaga el computador

3. El almacenamiento es más barato que la memoria.

El medio de almacenamiento más común es el dispositivo Usb. El dispositivo

que contiene al disco se llama unidad de disco (drive). La mayoría de las

computadoras personales tienen un disco duro no removible. Además

usualmente hay una o dos unidades de dispositivo Usb. El disco duro

normalmente puede guardar muchos más datos que un dispositivo Usb y por

eso se usa disco duro como el archivero principal de la computadora. Los

dispositivo Usb se usan para cargar programas nuevos, o datos al disco duro,

intercambiar datos con otros usuarios o hacer una copia de respaldo de los

datos que están en el disco duro.

Una computadora puede leer y escribir información en un disco duro mucho

más rápido que en el dispositivo Usb. La diferencia de velocidad se debe a que

un disco duro está construido con materiales más pesados, gira mucho más

rápido que un disco flexible y está sellado dentro de una cámara de aire, las

partículas de polvo no pueden entrar en contacto con las cabezas.

La memorización consiste en la capacidad de registrar sea una cadena de

caracteres o de instrucciones (programa) y tanto volver a incorporarlo en

determinado proceso como ejecutarlo bajo ciertas circunstancias.

El computador dispone de varios dispositivos de memorización:

La memoria ROM

La memoria RAM

• Programación C++ Esp.Alexis Olvany Torres Ch

Las memorias externas. Un aspecto importante de la memorización es la

capacidad de hacer ese registro en medios permanentes, básicamente

los llamados "archivos" grabados en disco.

El acumulador

La principal memoria externa es el llamado "disco duro", que está conformado

por un aparato independiente, que contiene un conjunto de placas de plástico

magnetizado apto para registrar la "grabación" de los datos que constituyen los

"archivos" y sistemas de programas. Ese conjunto de discos gira a gran

velocidad impulsado por un motor, y es recorrido también en forma muy veloz

por un conjunto de brazos que "leen" sus registros. También contiene un

circuito electrónico propio, que recepciona y graba, como también lee y dirige

hacia otros componentes del computador la información registrada.

Indudablemente, la memoria externa contenida en el disco duro es la principal

fuente del material de información (data) utilizado para la operación del

computador, pues es en él que se registran el sistema de programas que dirige

su funcionamiento general (sistema operativo), los programas que se utilizan

para diversas formas de uso (programas de utilidad) y los elementos que se

producen mediante ellos (archivos de texto, bases de datos, etc.).

Unidades de Memoria

BIT: puede tener valore de 0 y 1, es decir sistema binario

BYTE: son 8 Bits.

KILOBYTE (KB) = 2 **10 bytes

MEGABYTE (MB) = 2 ** 10 Kilobyte = 2 ** 20 Bytes

GIGABYTE (GB) = 2** 10 Megabyte = 2** 30 Bytes

TERABYTE (TB) =2**10 Gigabyte = 2**40 Bytes

• Programación C++ Esp.Alexis Olvany Torres Ch

Es necesario aclarar que las unidades son infinitas, pero las antes nombradas

son las usadas.

BIT: su nombre se debe a la contracción de Binary Digit, es la mínima unidad

de información y puede ser un cero o un uno

BYTE: es la también conocida como el octeto, formada por ocho bits, que es la

unidad básica, las capacidades de almacenamiento en las computadoras se

organiza en potencias de dos, 16, 32, 64.

Las demás unidades son solo múltiplos de las anteriores, por ello cada una de

ellas están formadas por un determinado número de Bits.

Memoria de datos

Los datos que manejas los programas varían continuamente, y esto exige que

la memoria que los contiene debe ser de lectura y escritura, por lo que la

memoria RAM estática (SRAM) es la más adecuada, aunque sea volátil.

Hay microcontroladores que disponen como memoria de datos una de lectura y

escritura no volátil, del tipo EEPROM. De esta forma, un corte en el suministro

de la alimentación no ocasiona la pérdida de la información, que está

disponible al reiniciarse el programa. El PIC16F84 dispone de 64 bytes de

memoria EEPROM para contener datos. ( EEPROM: también se graba

eléctricamente, pero su borrado es mucho más sencillo, ya que también es

eléctrico. No se pueden conseguir grandes capacidades y su tiempo de de

escritura y su consumo es elevado.)

Sistemas numéricos

Los modernos equipos de cómputo actuales no utilizan el sistema decimal para

representar valores numéricos, en su lugar se hace uso del sistema binario,

• Programación C++ Esp.Alexis Olvany Torres Ch

también llamado complemento de dos. Es importante entender cómo

representan las computadoras los valores numéricos, en éste capítulo

analizaremos varios conceptos importantes incluyendo los sistemas binario y

hexadecimal, la organización binaria de datos (bits, nibbles, bytes, palabras y

palabras dobles), sistemas numéricos con signo y sin signo, operaciones

aritméticas, lógicas, de cambio (shift) y rotación en valores binarios, campos de

bits, empaquetado de datos y el juego de caracteres ASCII.

El sistema numérico decimal

Hemos utilizado el sistema decimal (de base 10) por tanto tiempo que

prácticamente lo tomamos como algo natural. Cuando vemos un número, por

ejemplo el 123, no pensamos en el valor en sí, en lugar de ésto hacemos una

representación mental de cuántos elementos representa éste valor. En

realidad, el número 123 representa:

1*102 + 2*101 + 3*100

ó lo que es lo mismo:

100 + 20 + 3

Cada dígito a la izquierda del punto decimal representa un valor entre cero y

nueve veces una potencia incrementada de diez. Los dígitos a la derecha del

punto decimal por su parte representan un valor entre cero y nueve veces una

potencia decrementada de diez. Por ejemplo, el número 123.456 representa:

1*102 + 2*101 + 3*100 + 4*10-1 + 5*10-2 + 6*10-3

El sistema numérico binario

Los sistemas de cómputo modernos trabajan utilizando la lógica binaria. Las

computadoras representan valores utilizando dos niveles de voltaje

(generalmente 0V. y 5V.), con éstos niveles podemos representar exáctamente

• Programación C++ Esp.Alexis Olvany Torres Ch

dos valores diferentes, por conveniencia utilizamos los valores cero y uno.

Éstos dos valores por coincidencia corresponden a los dígitos utilizados por el

sistema binario.

El sistema binario trabaja de forma similar al sistema decimal con dos

diferencias, en el sistema binario sólo está permitido el uso de los dígitos 0 y 1

(en lugar de 0~9) y en el sistema binario se utilizan potencias de 2 en lugar de

potencias de 10. De aquí tenemos que es muy fácil convertir un número binario

a decimal, por cada "1" en la cadena binaria, sume 2n donde "n" es la posición

del dígito binario a partir del punto decimal contando a partir de cero. Por

ejemplo, el valor binario 110010102 representa:

1*27 + 1*26 + 0*25 + 0*24 + 1*23 + 0*22 + 1*21 + 0*20

=

128 + 64 + 8 + 2

=

20210

Para convertir un número decimal en binario es un poco más difícil. Se requiere

encontrar aquellas potencias de 2 las cuales, sumadas, producen el resultado

decimal, una forma conveniente es trabajar en "reversa" por ejemplo, para

convertir el número 1359 a binario:

210=1024, 211=2048. Por tanto la mayor potencia de 2 menor que 1359

es 210. Restamos 1024 a 1359 y empezamos nuestro número binario

poniendo un "1" a la izquierda. El resultado decimal es 1359-1024=335.

El resultado binario hasta este punto es: 1.

La siguiente potencia de 2 en orden descendente es 29=512 lo que es

mayor que el resultado de la resta del punto anterior, por lo tanto

agregamos un 0 a nuestra cadena binaria, ahora es: 10. El resultado

decimal es aún 335.

• Programación C++ Esp.Alexis Olvany Torres Ch

La siguiente potencia es 28=256 por lo que lo restamos a 335 y

agregamos 1 a la cadena binaria: 101. El resultado decimal es: 79.

27=128, ésto es mayor que 79. Agregamos un 0 a la cadena binaria:

1010 en tanto que el valor decimal es: 79.

Restamos 26=64 a 79. La cadena binaria es ahora: 10101. El resultado

decimal indica: 15.

15 es menor que 25=32, por tanto, Binario=101010, el valor decimal

sigue siendo: 15.

15 es menor que 24=16, de aquí, Binario=1010100, el valor decimal

continúa en: 15.

23=8 es menor que 15, así que agregamos un 1 a la cadena binaria:

10101001, en tanto que el nuevo valor decimal es: 7.

22 es menor que 7. Binario es ahora: 101010011, el resultado decimal

ahora vale: 3.

21 es menor que 3. Binario=1010100111, el nuevo valor decimal es: 1.

Finalmente el resultado decimal es 1 lo que es igual a 20 por lo que

agregamos un 1 a la cadena binaria. Nuestro resultado indica que el

equivalente binario del número decimal 1359 es: 10101001111

Formatos binarios

En un sentido estricto, cada número binario contiene una cantidad infinita de

dígitos, también llamados bits que es una abreviatura de binary digits, por

• Programación C++ Esp.Alexis Olvany Torres Ch

ejemplo, podemos representar el número siete de las siguientes formas:

111

00000111

000000000000111

Por conveniencia ignoraremos cualquier cantidad de ceros a la izquierda, sin

embargo, como las instrucciones compatibles con los procesadores Intel 80x86

trabajan con grupos de ocho bits a veces es más fácil extender la cantidad de

ceros a la izquierda en un múltiplo de cuatro ú ocho bits, por ejemplo, el

número siete podemos representarlo así: 01112 ó 000001112. También es

conveniente separar en grupos de cuatro dígitos los número binarios grandes,

por ejemplo, el valor binario 1010111110110010 puede ser escrito así 1010

1111 1011 0010. Además, en una cadena binaria asignaremos al dígito de la

extrema derecha como el bit de posición cero y cada bit subsecuente se le

asignará el siguiente número sucesivo, de ésta manera un valor binario de

ocho bits utiliza los bits cero al siete:

X7 X6 X5 X4 X3 X2 X1 X0

Al bit cero se le conoce como el bit de bajo orden en tanto que al bit de la

extrema izquierda diferente de cero se le llama bit de alto orden.

El sistema numérico hexadecimal

Un gran problema con el sistema binario es la verbosidad. Para representar el

valor 20210 se requieren ocho dígitos binarios, la versión decimal sólo requiere

de tres dígitos y por lo tanto los números se representan en forma mucho más

compacta con respecto al sistema numérico binario. Desafortunadamente las

computadoras trabajan en sistema binario y aunque es posible hacer la

conversión entre decimal y binario, ya vimos que no es precisamente una tarea

cómoda. El sistema de numeración hexadecimal, o sea de base 16, resuelve

éste problema (es común abreviar hexadecimal como hex aunque hex significa

base seis y no base dieciséis). El sistema hexadecimal es compacto y nos

• Programación C++ Esp.Alexis Olvany Torres Ch

proporciona un mecanismo sencillo de conversión hacia el formato binario,

debido a ésto, la mayoría del equipo de cómputo actual utiliza el sistema

numérico hexadecimal. Como la base del sistema hexadecimal es 16, cada

dígito a la izquierda del punto hexadecimal representa tantas veces un valor

sucesivo potencia de 16, por ejemplo, el número 123416 es igual a:

1*163 + 2*162 + 3*161 + 4*160

lo que dá como resultado:

4096 + 512 + 48 + 4 = 466010

Cada dígito hexadecimal puede representar uno de dieciséis valores entre 0 y

1510. Como sólo tenemos diez dígitos decimales, necesitamos "inventar" seis

dígitos adicionales para representar los valores entre 1010 y 1510. En lugar de

crear nuevos símbolos para éstos dígitos, utilizamos las letras A a la F. La

conversión entre hexadecimal y binario es sencilla, considere la siguiente tabla:

• Programación C++ Esp.Alexis Olvany Torres Ch

Binario Hexadecimal

0000 0

0001 1

0010 2

0011 3

0100 4

0101 5

0110 6

0111 7

1000 8

1001 9

1010 A

1011 B

1100 C

1101 D

1110 E

1111 F

• Programación C++ Esp.Alexis Olvany Torres Ch

Ésta tabla contiene toda la información necesaria para convertir de binario a

hexadecimal y visceversa. Para convertir un número hexadecimal en binario,

simplemente sustituya los correspondientes cuatro bits para cada dígito

hexadecimal, por ejemplo, para convertir 0ABCDh en un valor binario:

0 A B C D (Hexadecimal)

0000 1010 1011 1100 1101 (Binario)

Por comodidad, todos los valores numéricos los empezaremos con un dígito

decimal; los valores hexadecimales terminan con la letra h y los valores

binarios terminan con la letra b. La conversión de formato binario a

hexadecimal es casi igual de fácil, en primer lugar necesitamos asegurar que la

cantidad de dígitos en el valor binario es mútiple de 4, en caso contrario

agregaremos ceros a la izquierda del valor, por ejemplo el número binario

1011001010, la primera etapa es agregarle dos ceros a la izquierda para que

contenga doce ceros: 001011001010. La siguiente etapa es separar el valor

binario en grupos de cuatro bits, así: 0010 1100 1010. Finalmente buscamos en

la tabla de arriba los correspondientes valores hexadecimales dando como

resultado, 2CA, y siguiendo la convención establecida: 02CAh.

Boleano:Conjunto finito o infinito de elementos en el cual se han definido las

operaciones de adición, negación y multiplicación. Estas operaciones

corresponden a un grupo acciones de unión, complemento e intersección.

El binario como principal sistema de numeración utilizado en la informática para

la representación de datos

Operaciones básicas en binario (suma, resta,multiplicación y división)

Conceptos de Byte, multiplos y submúltiplos

Representación de datos según la clasificación básica aquí enunciada. Tener

en cuenta que los datos numéricos enteros hay con signo y sin signo.

• Programación C++ Esp.Alexis Olvany Torres Ch

Numéricos

Enteros

Enteros Cortos

Enteros Propiamente dichos

Enteros Largos

Tipos de

datos

Reales

Alfanuméric

os

Caracteres

Cadenas de Caracteres (String)

Boolenos

Ejercicios típicos

a. Como se representa el – 75 en binario, en un Byte

b. Convertir a binario y sumar y restar los siguientes números 41 y 23

c. Convertir 1110001 en base 2 a base 10, base 4, base 8 y base 16

d. Explicar la equivalencia de Byte, KB, MB, GB, TBy convertir 3.25 GB a KB

y a Bytes (recordar que el factor real de conversión es 1024... pero que por

facilitar los cálculos siempre se utiliza el 1000 como f

En Noviembre de 2000 apareció un nuevo standard.

Name Symbol Before the standardization After the standardization

Bit b 1 bit = 1 bit 1 bit = 1 bit

Byte B 1 B = 8 bit 1 B = 8 bit

kilobit kbit / kb 1 kbit = 1024 bit 1 kBit = 1000 bit

Kibibit KiBit 1 KiBit = 1024 bit

kilobyte kB 1 kB = 1024 B = Byte 1 kB = 1000 Byte

kibibyte KiB 1 KiB = 1024 Byte

megabit MBit / Mb 1 MBit = 1024 KBit 1 MBit = 1000 kBit

mebibit MiBit / Mib 1 Mib = 1024 KiBit

• Programación C++ Esp.Alexis Olvany Torres Ch

megabyte MB 1 MB = 1024 kB 1 MB = 1000 kB

Mebibyte MiBit / MiB 1 MiB = 1024 KiB

gigabit GBit / Gb 1 GBit = 1024 MBit 1 GBit = 1000 MBit

gibibit GiBit / Gib 1 Gib = 1024 MiBit

gigabyte GB 1 GB = 1024 MB 1 GB = 1000 MB

gibibyte GiB 1 GiB = 1024 MiB

terabyte TB 1 TB = 1024 GB 1 TB = 1000 GB

tebibyte TiB 1 TiB = 1024 GiB

petabyte PB 1 PB = 1024 TB 1 PB = 1000 TB

pebibyte PiB 1 PiB = 1024 TiB

exabyte EB 1 EB = 1024 PB 1 EB = 1000 PB

exbibyte EiB 1 EiB = 1024 PiB

zettabyte ZB 1 ZB = 1024 EB 1 ZB = 1000 EB

zebibyte ZiB 1 ZiB = 1024 EiB

yottabyte YB 1 YB = 1024 ZB 1 YB = 1000 ZB

yobibyte YiB 1 YiB = 1024 ZiB

Conversion: Ratas de Transferencia y ancho de banda

1 byte es igual a 8 bits

Byte = the well-established information measure unity

1 byte = 8 bits and 1 kilobyte (K / Kb) = 210

bytes = 1,024 bytes

1 megabyte (M / MB) = 220

= 1,048,576 bytes and 1 gigabyte (G / GB) = 230

bytes = 1,073,741,824 bytes

1 terabyte (T / TB) = 240

bytes = 1,099,511,627,776 bytes and 1 petabyte (P / PB) = 250

bytes =

1,125,899,906,842,624 bytes

1 exabyte (E / EB) = 260

bytes = 1,152,921,504,606,846,976 bytes

bit = the well-established data transfer unity

1 kilobit = 1000 bits

1 megabit = 1000000 bits

Datas of the hard disk are counted in kilobytes, however the transfer data rates are in kilobits.

Fait: A 56k modem (= 56000 bits) needs for transferring of 56k datas (= 458753 bits)

not 1 second, but at least 8,2 seconds.

This is confusing and you must always bear it in mind, when calculating transfer rates.

Rule of thumb : KByte de datos / segundos = rata de trasferencias (transfer rate)

Conexion Teorico

rata en KBit

Optimo

rata en KByte

Probable

rata en KByte

14.4 modem 14.4 kbit/s 1.2 KByte/s 1 KByte/s

28.8 modem 28.8 kbit/s 2.4 KByte/s 2 KByte/s

33.6 modem 33.6 kbit/s 3 KByte/s 2.5KByte/s

• Programación C++ Esp.Alexis Olvany Torres Ch

56 k modem 53 kbit/s 4.8 KByte/s 4 KByte/s

Single ISDN 64 kbit/s 6 KByte/s 5 KByte/s

Dual ISDN 128 kbit/s 12 KByte/s 10 KByte/s

DSL - light 384 kbit/s 35 KByte/s 30 KByte/s

DSL 1024 kbit/s 125 KByte/s 90 KByte/s

DSL 2048 kbit/s 250 KByte/s 180 KByte/s

DSL 3072 kbit/s ? KByte/s ? KByte/s

T1 1,54 Mbis/s 150 KByte/s 50 Kbyte/s

Cable modem 6 Mbits/s 300 KByte/s 50 KByte/s

Intranet / LAN 10 Mbits/s 350 KByte/s 35 KByte/s

100 base-T Lan 100 Mbits/s 500 KByte/s 50 KByte/s

El nuevo Standard IEC

bit bit 0 or 1

byte B 8 bits

kibibit Kibit 1024 bits

kilobit kbit 1000 bits

kibibyte (binary) KiB 1024 bytes

kilobyte (decimal) kB 1000 bytes

megabit Mbit 1000 kilobits

mebibyte (binary) MiB 1024 kibibytes

megabyte (decimal) MB 1000 kilobytes

gigabit Gbit 1000 megabits

gibibyte (binary) GiB 1024 mebibytes

gigabyte (decimal) GB 1000 megabytes

terabit Tbit 1000 gigabits

tebibyte (binary) TiB 1024 gibibytes

terabyte (decimal) TB 1000 gigabytes

petabit Pbit 1000 terabits

pebibyte (binary) PiB 1024 tebibytes

petabyte (decimal) PB 1000 terabytes

exabit Ebit 1000 petabits

exbibyte (binary) EiB 1024 pebibytes

exabyte (decimal) EB 1000 petabytes

• Programación C++ Esp.Alexis Olvany Torres Ch

Capacidad de Almacenamiento de Archivos por Bits y Bytes

bit byte Kilobyte Megabyte Gigabyte

Bit 1 0.125 0.000122070312 1.192092895 ×

10-7

1.16415321875

× 10-10

Byte 8 1 0.0009765625 9.53674316 ×

10-7

9.31322575 ×

10-10

Kiloby

te 8 192 1 024 1 0.0009765625

9.53674316 ×

10-7

Megab

yte 8 388 608 1 048 576 1 024 1 0,0009765625

Gigab

yte 8,589,934,592 1,073,741,824 1,048,576 1,024 1

Terab

yte 8,796,093,022,208 1,099,511,627,776 1,073,741,824 1,048,576 1,024

Petaby

te 9,007,199,254,740,990 1,125,899,906,842,624 1,099,511,627,776 1,073,741,824 1,048,576

Exaby

te

9,223,372,036,854,780

,000

1,152,921,504,606,846

,976

1,125,899,906,842,

624

1,099,511,627,

776 1,073,741,824

CD: 2 · 44100 · 16 = 1,4112 MBit/s : 8 bit/byte = 176,4 kbyte/s

2 · 44100 · 20 = 1,764 MBit/s : 8 bit/byte = 220,5 kbyte/s

2 · 44100 · 24 = 2,1168 MBit/s : 8 bit/byte = 264,6 kbyte/s

2 · 48000 · 24 = 2,304 MBit/s : 8 bit/byte = 288,0 kbyte/s