La computadora : es una máquina electrónica que recibe y procesa datos para convertirlos en información útil. Una computadora es una colección de circuitos integrados y otros componentes relacionados que puede ejecutar con exactitud, rapidez y de acuerdo a lo indicado por un usuario o automáticamente por otro programa, una gran variedad de secuencias o rutinas de instrucciones que son ordenadas, organizadas y sistematizadas en función a una amplia gama de aplicaciones prácticas y precisamente determinadas, proceso al cual se le ha denominado con el nombre de programación y al que lo realiza se le llama programador. La computadora, además de la rutina o programa informático, necesita de datos específicos (a estos datos, en conjunto, se les conoce como "Input" en inglés o de entrada) que deben ser suministrados, y que son requeridos al momento de la ejecución, para proporcionar el producto final del procesamiento de datos, que recibe el nombre de "output" o de salida. La información puede ser entonces utilizada, reinterpretada, copiada, transferida, o retransmitida a otra(s) persona(s), computadora(s) o componente(s) electrónico(s) local o remotamente usando diferentes sistemas de telecomunicación, que puede ser grabada, salvada o almacenada en algún tipo de dispositivo o unidad de almacenamiento.
La característica principal que la distingue de otros dispositivos similares, como la calculadora no programable, es que es una máquina de propósito general, es decir, puede realizar tareas muy diversas, de acuerdo a las posibilidades que brinde los lenguajes de programación, el sofware y el hardware.

1. Monitor
2. Placa base
3. CPU
4. Memoria RAM
5. Tarjeta de expansión
6. Fuente de alimentación
7. Unidad de disco óptico
8. Disco duro, Unidad de estado sólido
9. Teclado
10. Ratón/Mouse
HARDWARE
se refiere a todas las partes tangibles de un sistema informático; sus componentes son: eléctricos, electrónicos, electromecánicos y mecánicos.1 Son cables, gabinetes o cajas, periféricos de todo tipo y cualquier otro elemento físico involucrado; contrariamente, el soporte lógico es intangible y es llamado software. El término es propio del idioma inglés (literalmente traducido: partes duras), su traducción al español no tiene un significado acorde, por tal motivo se la ha adoptado tal cual es y suena; Se define como «Conjunto de los componentes que integran la parte material de una computadora». El término, aunque sea lo más común, no solamente se aplica a las computadoras; del mismo modo, también un robot, un teléfono móvil, una cámara fotográfica o un reproductor multimedia poseen hardware (y software).
La historia del hardware de computador se puede clasificar en cuatro generaciones, cada una caracterizada por un cambio tecnológico de importancia. Una primera delimitación podría hacerse entre hardware básico, el estrictamente necesario para el funcionamiento normal del equipo, y complementario, el que realiza funciones específicas.
Un sistema informático se compone de una unidad central de procesamiento (UCP/CPU), encargada de procesar los datos, uno o varios periféricos de entrada, los que permiten el ingreso de la información y uno o varios periféricos de salida, los que posibilitan dar salida (normalmente en forma visual o auditiva) a los datos procesados.
Una de las formas de clasificar el hardware es en dos categorías: por un lado, el "básico", que abarca el conjunto de componentes indispensables necesarios para otorgar la funcionalidad mínima a una computadora; y por otro lado, el hardware "complementario", que, como su nombre indica, es el utilizado para realizar funciones específicas (más allá de las básicas), no estrictamente necesarias para el funcionamiento de la computadora.
Así es que: un medio de entrada de datos, la unidad central de procesamiento (C.P.U.), la memoria RAM, un medio de salida de datos y un medio de almacenamiento constituyen el "hardware básico".
Los medios de entrada y salida de datos estrictamente indispensables dependen de la aplicación: desde el punto de vista de un usuario común, se debería disponer, al menos, de un teclado y un monitor para entrada y salida de información, respectivamente; pero ello no implica que no pueda haber una computadora (por ejemplo controlando un proceso) en la que no sea necesario teclado ni monitor; bien puede ingresar información y sacar sus datos procesados, por ejemplo, a través de una placa de adquisición/salida de datos.
Las computadoras son aparatos electrónicos capaces de interpretar y ejecutar instrucciones programadas y almacenadas en su memoria; consisten básicamente en operaciones aritmético-lógicas y de entrada/salida. Se reciben las entradas (datos), se las procesa y almacena (procesamiento), y finalmente se producen las salidas (resultados del procesamiento). Por ende todo sistema informático tiene, al menos, componentes y dispositivos hardware dedicados a alguna de las funciones antedichas; a saber:
Procesamiento: Unidad Central de Proceso o CPU
Almacenamiento: Memorias
Entrada: Periféricos de entrada (E)
Salida: Periféricos de salida (S)
Entrada/Salida: Periféricos mixtos (E/S)
SOFTWARE
Se conoce como software1 al equipamiento lógico o soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas
Los componentes lógicos incluyen, entre muchos otros, las aplicaciones informáticas; tales como el procesador de texto, que permite al usuario realizar todas las tareas concernientes a la edición de textos; el llamado software de sistema, tal como el sistema operativo, que básicamente permite al resto de los programas funcionar adecuadamente, facilitando también la interacción entre los componentes físicos y el resto de las aplicaciones, y proporcionando una interfaz con el usuario.
Existen varias definiciones similares aceptadas para software, pero probablemente la más formal sea la siguiente:
Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de las operaciones de un sistema de computación.
Considerando esta definición, el concepto de software va más allá de los programas de computación en sus distintos estados: código fuente, binario o ejecutable; también su documentación, los datos a procesar e incluso la información de usuario forman parte del software: es decir, abarca todo lo intangible, todo lo «no físico» relacionado.
El término «software» fue usado por primera vez en este sentido por John W. Tukey en 1957. En la ingeniería de software y las ciencias de la computación, el software es toda la información procesada por los sistemas informáticos: programas y datos.
Clasificación del software
Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, a los fines prácticos se puede clasificar al software en tres grandes tipos:
Software de sistema: Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles del sistema informático en particular que se use, aislándolo especialmente del procesamiento referido a las características internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global. Incluye entre otros:
Sistemas operativos
Controladores de dispositivos
Herramientas de diagnóstico
Herramientas de Corrección y Optimización
Servidores
Utilidades
Software de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluyen básicamente:
Editores de texto
Compiladores
Intérpretes
Enlazadores
Depuradores
Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).
Software de aplicación: Es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre muchos otros:
Aplicaciones para Control de sistemas y automatización industrial
Aplicaciones ofimáticas
Software educativo
Software empresarial
Bases de datos
Telecomunicaciones (por ejemplo Internet y toda su estructura lógica)
Videojuegos
Software médico
Software de cálculo numérico y simbólico.
Software de diseño asistido (CAD)
Software de control numérico (CAM)
lenguaje de programación
es un idioma artificial diseñado para expresar procesos que pueden ser llevadas a cabo por máquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.1
Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.
También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:
El desarrollo lógico del programa para resolver un problema en particular.
Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa).
Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
Prueba y depuración del programa.
Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación, sino un conjunto de instrucciones que permiten diseñar el contenido de los documentos).
Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción de un programa de forma colaborativa.
Historia
En 1928 la empresa Fairchild y Texas Instruments produjeron los primeros circuitos integrados basados en semiconductores. Las primeras computadoras, incluyeron a la ENIAC, el Electronic Numerical Integrator and Computer, que en 1943 comenzaron a construir John W. Mauchly y John P. Eckert en la Universidad de Pensilvania (EE.UU.). Esta enorme máquina medía más de 30 metros de largo y pesaba 32 toneladas, estaba compuesta por 17.468 válvulas. El calor de las válvulas elevaba la temperatura de la sala donde se hallaba instalada hasta los 50º C. y para que llevase a cabo las operaciones para las que se había diseñado. Cuando la ENIAC se terminó en 1946, la II Guerra Mundial ya había terminado. El fin de la contienda hizo que los esfuerzos hasta entonces dedicados principalmente a objetivos militares, se destinaran también a otro tipo de investigación científica más relacionada con las necesidades de la empresa privada. Los esfuerzos múltiples dieron resultados en 1945 Mauchly y Eckert comenzaron a trabajar en una sucesora de la ENIAC, el EDVAC (Electronic Discrete Variable Automatic Computer) y Aiken inició el diseño de la Mark II. En 1951, el que está considerado como la primera computadora que se llamó Saly fue ampliamente comercializada, la UNIVAC I, comenzó a funcionar con éxito. En 1952 la computadora UNIVAC se utilizó para realizar el recuento de votos en las elecciones presidenciales de EE.UU. El resultado victoria (Eisenhower sobre Adlai Stevenson) se conoció 45 minutos después de que se cerraran los colegios electorales.
En 1952 entra en funcionamiento la primera de las llamadas IAS machines, diseñadas por John von Neumann y que incorporaban notables mejoras respecto a sus predecesoras y en 1962, Steven Russell creó el primer juego para computadoras, Spacewar.
Primera Generación (1940-1954)
En esta época las computadoras funcionaban con válvulas, usaban tarjetas perforadas para entrar los datos y los programas, utilizaban cilindros magnéticos para almacenar información e instrucciones internas y se utilizaban exclusivamente en el ámbito científico o militar. La programación implicaba la modificación directa de los cartuchos y eran sumamente grandes, utilizaban gran cantidad de electricidad, generaban gran cantidad de calor y eran sumamente lentas. La comunicación era breve. 
Segunda Generación (1955-1963)
Características de está generación: Usaban transistores para procesar información. Los transistores eran más rápidos, pequeños y más confiables que los tubos al vacío. 200 transistores podían acomodarse en la misma cantidad de espacio que un tubo al vacío. Usaban pequeños anillos magnéticos para almacenar información e instrucciones. Producían gran cantidad de calor y eran sumamente lentas. Se mejoraron los programas de computadoras que fueron desarrollados durante la primera generación. Se desarrollaron nuevos lenguajes de programación como COBOL y FORTRAN, los cuales eran comercialmente accesibles. Se usaban en aplicaciones de sistemas de reservaciones de líneas aéreas, control del tráfico aéreo y simulaciones de propósito general. La marina de los Estados Unidos desarrolla el primer simulador de vuelo,Computadora Whirlwind Surgieron las minicomputadoras y los terminales a distancia. Se comenzó a disminuir el tamaño de las computadoras.
Aparecen muchas compañías y las computadoras eran bastante avanzadas para su época como la serie 5000 de Burroughs y la ATLAS de la Universidad de Manchester. Algunas computadoras se programaban con cinta perforadas y otras por medio de cableado en un tablero.

Tercera Generación (1964-1970)
Comienza a utilizarse los circuitos integrados, lo cual permitió abaratar costos al tiempo que se aumentaba la capacidad de procesamiento y se reducía el tamaño de las máquinas. La tercera generación de computadoras emergió con el desarrollo de circuitos integrados (pastillas de silicio) en las que se colocan miles de componentes electrónicos en una integración en miniatura. El PDP-8 de la Digital Equipment Corporation fue el primer miniordenador.

Cuarta Generación (1971-1983)
Fase caracterizada por la integración de los componentes electrónicos, lo que propició la aparición del microprocesador, es decir, un único circuito integrado en el que se reúnen los elementos básicos de la máquina. Se desarrolló el microprocesador. Se colocan más circuitos dentro de un "chip". "LSI - Large Scale Integration circuit". "VLSI - Very Large Scale Integration circuit". Cada "chip" puede hacer diferentes tareas. Un "chip" sencillo actualmente contiene la unidad de control y la unidad de aritmética/lógica. El tercer componente, la memoria primaria, es operado por otros "chips". Se reemplaza la memoria de anillos magnéticos por la memoria de "chips" de silicio. Se desarrollan las microcomputadoras, o sea, computadoras personales o PC. Se desarrollan las supercomputadoras.
Características de está generación: Se desarrollaron circuitos integrados para procesar información. Se desarrollaron los "chips" para almacenar y procesar la información. Un "chip" es una pieza de silicio que contiene los componentes electrónicos en miniatura llamados semiconductores. Los circuitos integrados recuerdan los datos, ya que almacenan la información como cargas eléctricas. Surge la multiprogramación. Las computadoras pueden llevar a cabo ambas tareas de procesamiento o análisis matemáticos. Emerge la industria del "software". Se desarrollan las minicomputadoras IBM 360 y DEC PDP-1. Otra vez las computadoras se tornan más pequeñas, más ligeras y más eficientes. Consumían menos electricidad, por lo tanto, generaban menos calor.

Quinta Generación (1984 -1989 )
Surge la PC tal cual como la conocemos en la actualidad. IBM presenta su primera computadora personal y revoluciona el sector informativo. En vista de la acelerada marcha de la microelectrónica, la sociedad industrial se ha dado a la tarea de poner también a esa altura el desarrollo del software y los sistemas con que se manejan las computadoras.

Sexta Generación (1999 hasta la fecha )
Como supuestamente la sexta generación de computadoras está en marcha desde principios de los años noventas, debemos por lo menos, esbozar las características que deben tener las computadoras de esta generación. También se mencionan algunos de los avances tecnológicos de la última década del siglo XX y lo que se espera lograr en el siglo XXI. Las computadoras de esta generación cuentan con arquitecturas combinadas Paralelo / Vectorial, con cientos de microprocesadores vectoriales trabajando al mismo tiempo; se han creado computadoras capaces de realizar más de un millón de millones de operaciones aritméticas de punto flotante por segundo (teraflops); las redes de área mundial (Wide Area Network, WAN) seguirán creciendo desorbitadamente utilizando medios de comunicación a través de fibras ópticas y satélites, con anchos de banda impresionantes. Las tecnologías de esta generación ya han sido desarrolla das o están en ese proceso. Algunas de ellas son: inteligencia / artificial distribuida; teoría del caos, sistemas difusos, holografía, transistores ópticos, etc.

EL MODELO DE VON NEUMANN

La maquina de Von Neumann tenia 5 partes básicas: La memoria, la unidad Aritmética lógica, la unidad de control del programa y los equipos de entrada y salida. La memoria constaba de 4096 palabras, cada una con 40 bits (0 o 1). Cada palabra podía contener 2 instrucciones de 20 bits o un número entero de 39 bits y su signo. Las instrucciones tenían 8 bits dedicados a señalar el tiempo de la misma y 12 bits para especificar alguna de las 4096 palabras de la memoria.
Dentro de la unidad aritmética - lógica, el antecedente directo actual CPU (Unidad central de Proceso), había un registro interno especial de 40 bits llamado en acumulador. Una instrucción típica era sumar una palabra de la memoria al acumulador o almacenar éste en la memoria.
La máquina no manejaba la aritmética de punto flotante, porque Von Neumann pensaba que cualquier matemático competente debería ser capaz de llevar la cuenta del punto decimal (en este caso del punto binario), mentalmente.
Un elemento importante del hardware de la PC es la unidad del sistema, que contiene una tarjeta de sistema, fuente de poder y ranuras de expansión para tarjetas opcionales. Los elementos de la tarjeta de sistema son un microprocesador, memoria de solo lectura (ROM) y memoria de acceso aleatorio (RAM).
El cerebro de la PC y compatibles es un microprocesador basado en la familia 8086 de Intel, que realiza todo el procesamiento de datos e instrucciones. Los procesadores varían en velocidad y capacidad de memoria, registros y bus de datos. Un bus de datos transfiere datos entre el procesador, la memoria y los dispositivos externos.
Aunque existen muchos tipos de computadoras digitales según se tenga en cuenta su tamaño, velocidad de proceso, complejidad de diseño físico, etc., los principios fundamentales básicos de funcionamiento son esencialmente los mismos en todos ellos.
Se puede decir que una computadora está formada por tres partes fundamentales, aunque una de ellas es subdividida en dos partes no menos importantes. En la figura 1.2 se muestran dichas partes, llamadas genéricamente unidades funcionales debido a que, desde el punto de vista del funcionamiento, son independientes.

Figura 1.2.- Unidades Funcionales de la computadora
El nombre de cada parte nos indica la función que realiza. Así, la Unidad Central de Proceso (CPU) es la que coordina el funcionamiento conjunto de las demás unidades y realiza los cálculos necesarios; por eso la podemos subdividir en una Unidad de Control (UC) y en una unidad de cálculo o Unidad Aritmético-Lógica (UAL).
La unidad de Memoria Principal (MP) se encarga de almacenar las instrucciones que realizará la Unidad de Control al ejecutar un programa y los datos que serán procesados. La Unidad de Entradas y Salidas será la encargada de la comunicación con el exterior a través de los periféricos. Estos periféricos pueden ser: de entrada, como los teclados; de salida, como los tubos de rayos catódicos, y de entrada y salida, como los discos magnéticos.
Unidad de Memoria Principal
La memoria principal esta formada por un conjunto de unidades llamadas palabras. Dentro de cada una de estas palabras se guarda la información que constituye una instrucción o parte de ella (puede darse el caso de que una sola instrucción necesite varia palabras), o un dato o parte de un dato (también un dato puede ocupar varias palabras).
A la cantidad de palabras que forman la MP se le denomina capacidad de memoria. De este modo, cuanto mayor sea el número de palabras mayor será el número de instrucciones y datos que podrá almacenar la computadora.
Una palabra esta formada a su vez de unidades mas elementales llamadas bits, del mismo modo que en el lenguaje natural una palabra esta formada por letras. Cada bit solo puede guardar dos valores, el valor 0 o el valor 1; por eso se dice que son elementos binarios.
El número de bits que forman una palabra se llama longitud de palabra. Por regla general, las computadoras potentes tienen memorias con longitud de palabra grande, mientras que las computadoras pequeñas tienen memorias con longitud de palabra menor.
En la figura 1.3 se muestra como se puede estar organizada una Memoria Principal.

Figura 1.3.- Organización de una unidad de memoria
Ya se ha visto en las secciones precedentes como funcionan la CPU y la MP, pero puede decirse que es necesaria la comunicación entre el interior de la computadora y su entorno o periferia. Esta comunicación se consigue a través de dispositivos de muy diversos tipos, como son: teclados, impresoras, pantallas, discos magnéticos, etc.
Es estos dispositivos se les conoce con el nombre genérico de periféricos.
En la figura 1.4 se muestran algunos periféricos conectados a la Unidad de E/S, la cual hace de intermediaria entre los periféricos y la CPU. Las flechas indican el sentido en que fluye la información. , la cual hace de intermediaria entre los periféricos y la CPU. Las flechas indican el sentido en que fluye la información.

Figura 1.4.- La unidad de entrada y salida hace de intermediaria entre la UCP y los periféricos
La coordinación de la comunicación entre los periféricos y la CPU la realiza la Unidad de E/S. Obsérvese que esta no es un periférico sino un dispositivo que gestiona a los periféricos siguiendo las ordenes de la CPU; es decir, la Unidad de E/S recibe de la Unidad de Control información sobre el tipo de transferencia de datos que debe realizar (si es de entrada o de salida) y periférico que debe de utilizar; si es de salida recibirá también el dato que debe enviar y el momento de la operación.
Entonces, la Unidad de E/S seleccionara el periférico y ejecutara la operación teniendo en cuanta las características propias de cada periférico. Una vez ejecutada la orden avisara a la UC de la terminación de la transferencia.
Cada periférico o parte de un periférico tendrá asignado un numero o dirección que servirá para identificarlo. Cuando la UC quiera seleccionarlo enviara dicho número a la Unidad de E/S.
Dispositivos de entrada y salida
Los dispositivos de entrada son aquellos dispositivos externos de hardware que tienen componentes situados fuera de la computadora, a la que pueden dar información e/o instrucciones. Mientras tanto los dispositivos de salida son aquellos dispositivos que permiten ver resultados del proceso de datos que realice la computadora (salida de datos). El mas común es la pantalla o monitor, aunque también están las impresoras (imprimen los resultados en papel), los trazadores gráficos o plotters, las bocinas, etc.
Para diferenciar los dispositivos tenemos dos enfoques posibles, el primero de ellos se centra en el modo de almacenar la información (clasificando los dispositivos como de bloque o de carácter)1 y el segundo enfoque se centra en el destinatario de la comunicación (usuario, maquina, comunicadores)2
Un dispositivo de bloque almacena la información en bloques de tamaño fijo. Al ser el bloque la unidad básica de almacenamiento, todas las escrituras o lecturas se realizan mediante múltiplos de un bloque. Es decir escribe 3 o 4 bloques, pero nunca 3,5 bloques. El tamaño de los bloques suele variar entre 512 Bytes hasta 32.768 Bytes. Un disco duro entraría dentro de esta definición. A diferencia de un dispositivo de bloque un dispositivo de carácter, no maneja bloques fijo de información sino que envía o recibe un flujo de caracteres. Dentro de esta clase podemos encontrar impresoras o interfaces de red.1
Entre cada categoria y dispositivo, hay grandes diferencias:2
Velocidad de transferencia de datos: varios órdenes de magnitud para transferir pero el hacer esto tienes que hacerlo con mucho cuidado
, según las necesidades de cada dispositivo
Aplicación: la funcionalidad para la que esta diseñado un dispositivo tiene influencia sobre el software por ende lo tendrá sobre el sistema operativo.
Complejidad de control: cada dispositivo tiene una complejidad asociada, no es lo mismo controlar un ratón que gestionar un disco duro.
Unidad de transferencia: datos transferidos como un flujo de bytes/caracteres o en bloques de tamaño fijo
Representación de datos: cada dispositivo puede usar su propia codificación de datos
Condiciones de error: el porqué del error, su manera de notificarlo así como sus consecuencias difiere ampliamente entre los dispositivos
Algunos dispositivos de entrada y salida
Entrada:
Teclado
Ratón
Joystick
Lápiz óptico
Micrófono
Webcam
Escáner
Escáner de código de barras
Salida:
Monitor
Altavoz
Auriculares
Impresora
Plotter
Proyector
Entrada/salida (mixtos):
Unidades de almacenamiento: CD,DVD, Memory cards, Disco Duro Externo, Disco duro, Pendrive USB.
Módem
Router
Pantalla táctil
Tarjeta de red
Bit
Bit es el acrónimo Binary digit (dígito binario). Un bit es un dígito del sistema de numeración binario.
Mientras que en el sistema de numeración decimal se usan diez dígitos, en el binario se usan sólo dos dígitos,
el 0 y el 1. Un bit o dígito binario puede representar uno de esos dos valores, 0 ó1.
Se puede imaginar un bit, como una bombilla que puede estar en uno de los siguientes dos estados:
El bit es la unidad mínima de información empleada en informática, en cualquier dispositivo digital,
o en la teoría de la información.
Con él, podemos representar dos valores cuales quiera, como verdadero o falso,
abierto o cerrado, blanco o negro, norte o sur,
masculino o femenino, rojo o azul, etc. Basta con asignar uno de esos valores al estado de "apagado"
, y el otro al estado de "encendido" (1).
Combinaciones de bits
Con un bit podemos representar solamente dos valores, que suelen representarse como 0, 1.
Para representar o codificar más información en un dispositivo digital, necesitamos una mayor cantidad de bits. Si usamos dos bits, tendremos cuatro combinaciones posibles:
0 0 - Los dos están "apagados"
0 1 - El primero (de izquierda a derecha) está "apagado" y el segundo "encendido"
1 0 - El primero (de izquierda a derecha) está "encendido" y el segundo "apagado"
1 1 - Los dos están "encendidos"
Con estas cuatro combinaciones podemos representar hasta cuatro valores diferentes, como por ejemplo, los colores azul, verde, rojo y magenta.
A través de secuencias de bits, se puede codificar cualquier valor discreto como números, palabras, e imágenes. Cuatro bits forman un nibble, y pueden representar hasta 24 = 16 valores diferentes; ocho bits forman un octeto, y se pueden representar hasta 28 = 256 valores diferentes. En general, con un número n de bits pueden representarse hasta 2n valores diferentes.
Nota: Un byte y un octeto no son lo mismo. Mientras que un octeto siempre tiene 8 bits, un byte contiene un número fijo de bits, que no necesariamente son 8. En los computadores antiguos, el byte podría estar conformado por 6, 7, 8 ó 9 bits. Hoy en día, en la inmensa mayoría de los computadores, y en la mayoría de los campos, un byte tiene 8 bits, siendo equivalente al octeto, pero hay excepciones
Valor de posición
En cualquier sistema de numeración posicional, el valor de los dígitos depende de la posición en que se encuentren.
En el sistema decimal, por ejemplo, el dígito 5 puede valer 5 si está en la posición de las unidades, pero vale 50 si está en la posición de las decenas, y 500 si está en la posición de las centenas. Generalizando, cada vez que nos movemos una posición hacia la izquierda el dígito vale 10 veces más, y cada vez que nos movemos una posición hacia la derecha, vale 10 veces menos. Esto también es aplicable a números con decimales.+-----------+-----------+-----------+-----------+-----------+
| Centenas | Decenas | Unidades | Décimas | Centésimas| <-- Nombre de la posición
+-----------+-----------+-----------+-----------+-----------+
| 100 | 10 | 1 | 1/10 | 1/100 | <-- Valor del dígito decimal
+-----------+-----------+-----------+-----------+-----------+ de acuerdo a su posición
| 10^2 | 10^1 | 10^0 | 10^(-1) | 10^(-2) | <-- Valor del dígito decimal
+-----------+-----------+-----------+-----------+-----------+ de acuerdo a su posición
^ expresado en potencias de 10
posición de la coma decimal
Por tanto, el número 153,7 en realidad es: 1 centena + 5 decenas + 3 unidades + 7 décimas, es decir,
100 + 50 + 3 + 0,7 = 153,7.
En el sistema binario es similar, excepto que cada vez que un dígito binario (bit) se desplaza una posición hacia la izquierda vale el doble (2 veces más), y cada vez que se mueve hacia la derecha, vale la mitad (2 veces menos).+-----+-----+-----+-----+-----+
| 16 | 8 | 4 | 2 | 1 | <-- Valor del bit de acuerdo a su posición
+-----+-----+-----+-----+-----+ expresado en números
| 2^4 | 2^3 | 2^2 | 2^1 | 2^0 | <-- Valor del bit de acuerdo a su posición
+-----+-----+-----+-----+-----+ expresado en forma de potencias de 2
Abajo vemos representado el número 19.
16 + 2 + 1 = 19.
16 8 4 2 1
<-- Valor de posición
Representación gráfica
de los bits como bombillas
encendidas y apagadas
1 0 0 1 1
<-- Dígitos binarios (bits)
También se pueden representar valores fraccionarios. Los números reales se pueden representar con formato de coma fija o de coma flotante. Abajo vemos el número 5,25 representado en una forma binaria de coma fija.
4 + 1 + 0,25 = 5,25
4 2 1 1/2 1/4
<-- Valor de posición
Representación gráfica
de los bits como bombillas
encendidas y apagadas
1 0 1 0 1
<-- Dígitos binarios (bits)
La de arriba es una representación en coma fija de un número real en formato binario. Aunque la representación de números reales en coma flotante es diferente lo que se muestra, el esquema da una idea una parte del concepto. La representación en coma flotante es similar a la notación científica en una calculadora de mano, solo que en vez números decimales se usan números binarios y el exponente no está en base 10 sino en base 2.
Subíndices
Cuando se trabaja con varios sistemas de numeración o cuando no está claro con cual se está trabajando, es típico usar un subíndice para indicar el sistema de numeración con el que se ha representado un número. El 10 es el subíndice para los números en el sistema decimal y el 2 para los del binario. En los ejemplos de abajo se muestran dos números en el sistema decimal y su equivalente en binario. Esta igualdad se representa de la siguiente manera:
1910 = 100112
5,2510 = 101,012
Bits más y menos significativos
Un conjunto de bits, como por ejemplo un byte, representa un conjunto de elementos ordenados. Se llama bit más significativo (MSB) al bit que tiene un mayor peso (mayor valor) dentro del conjunto, análogamente, se llama bit menos significativo (LSB) al bit que tiene un menor peso dentro del conjunto.
En un Byte, el bit más significativo es el de la posición 7, y el menos significativo es el de la posición 0+---+---+---+---+---+---+---+---+
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | <-- Posición del bit
+---+---+---+---+---+---+---+---+
|128|64 |32 |16 | 8 | 4 | 2 | 1 | <-- Valor del bit de acuerdo a su posición
+---+---+---+---+---+---+---+---+
| |
| +- Bit menos significativo
+----------------------------- Bit más significativo
En una palabra de 16 bits, el bit más significativo es el de la posición 15 y el menos significativo el de la posición 0.+----+----+----+----+----+----+---+---+---+---+---+---+---+---+---+---+
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | <-- Posición del bit
+----+----+----+----+----+----+---+---+---+---+---+---+---+---+---+---+
|2^15|2^14|2^13|2^12|2^11|2^10|512|256|128|64 |32 |16 | 8 | 4 | 2 | 1 | <-- Valor del bit de acuerdo
+----+----+----+----+----+----+---+---+---+---+---+---+---+---+---+---+ a su posición
| |
| +-- Bit menos significativo
+-------------------------------------------------------------------- Bit más significativo
Tomemos, por ejemplo, el número decimal 27 codificado en forma binaria en un octeto:

Aquí, el primer '0', el de la izquierda, (que se corresponde con el coeficiente de
), es el bit más significativo, siendo el último '1', el de la derecha, (que se corresponde con el coeficiente de
), el menos significativo.


En cualquier caso, el bit más significativo es el del extremo izquierdo y el menos significativo el del extremo derecho. Esto es análogo al sistema decimal, en donde el dígito más significativo es el de la izquierda y el menos significativo el de la derecha, como por ejemplo, en el número 179, el dígito más significativo, el que tiene mayor valor, es el 1, (el de las centenas), y el menos significativo, el 9, (el de las unidades).
Little endian y Big endian
Little endian y big endian se refieren al orden que las máquinas asignan a los bytes que representan números o valores numéricos. Una máquina little endian asigna los bytes menos significativos en el extremo más bajo de la memoria, mientras que una máquina big endian asigna los bytes menos significativos en el extremo más alto. En los computadores cada byte se identifica con su posición en la memoria (dirección). Cuando se manejan números de más de un byte, estos bytes también deben estar ordenados de menor a mayor, indicando la posición del byte menos significativo y del byte más significativo. De este modo, un byte con el número decimal 27 se almacenaría en una máquina little endian igual que en una máquina big endian, ya que sólo ocupa un byte. Sin embargo, para números más grandes los bytes que los representan se almacenarían en distinto orden en cada arquitectura. Este aspecto es particularmente importante en la programación en lenguaje ensamblador o en código máquina, ya que algunas máquinas consideran el byte situado en la dirección más baja de la memoria el menos significativo (arquitectura little endian, como los procesadores Intel) mientras que otras consideran que ése es el byte más significativo (arquitectura big endian, como los procesadores Motorola).
Por ejemplo, consideremos el número hexadecimal entero AABBCCDD, de 32 bits (4 bytes), localizado en la dirección 100 de la memoria. El número ocuparía las posiciones desde la 100 a la 103, pero dependiendo de si la máquina es little o big endian, los bytes se almacenarían de diferente manera:
Little-endian (como Intel)
100
101
102
103
...
DD
CC
BB
AA
...
Big-endian (como Motorola)
100
101
102
103
...
AA
BB
CC
DD
...
En las imágenes de arriba, en donde se representan las posiciones de memoria 100, 101, 102 y 103 creciendo de izquierda a derecha, «parece» que la representación big endian es más natural, ya que el número AABBCCDD lo podemos leer correctamente (ver figura), mientras que en la representación little endian parece que el número está al revés, o «patas arriba». Sin embargo, no hay nada que nos impida imaginar que las direcciones de memoria «crecen» de derecha a izquierda, y al observar la memoria de esta manera, la representación little endian «se ve natural» y es labig endian la que «parece» al revés, como se muestra en las figuras
Little-endian (como Intel)
103
102
101
100
...
AA
BB
CC
DD
...
Big-endian (como Motorola)
103
102
101
100
...
DD
CC
BB
AA
...
Independiente de si la máquina es de arquitectura little endian o big endian, los bits dentro de cada byte siempre están en el mismo orden, con el bit más significativo a la izquierda y el menos significativo a la derecha. Los registros del procesador, que pueden ser de 4 a 64 bits, y más, también tienen sus bits en el mismo orden en ambos tipos de máquina. La diferencia entre little y big endian solo existe externamente, en en el orden en que los bytes se representan en memoria.
Arquitecturas de 4, 8, 16, 32 y 64 bits
Cuando se habla de CPUs o microprocesadores de 4, 8, 16, 32, 64 bits, se refiere al tamaño, en número de bits, que tienen los registros internos del procesador y también a la capacidad de procesamiento de la Unidad aritmético lógica (ALU). Un microprocesador de 4 bits tiene registros de 4 bits y la ALU hace operaciones con los datos en esos registros de 4 bits, mientras que un procesador de 8 bits tiene registros y procesa los datos en grupos de 8 bits.
Los procesadores de 16, 32 y 64 bits tienen registros y ALU de 16, 32 y 64 bits respectivamente, y generalmente pueden procesar los datos, tanto en el tamaño en bits de sus registros como, dependiendo que su diseño lo permita, en determinados submúltiplos de éstos. Así, un procesador de 16 bits puede procesar los datos en grupos de 8 y 16 bits, comportándose como si fuera un procesador tanto de 8 como de 16 bits. Un procesador de 32 bits puede procesar los datos en grupos de 8, 16 y 32 bits, y el procesador de 64 bits puede procesar los datos en grupos de 8, 16, 32 y 64 bits. Para poder hacer esto, los procesadores de 16, 32 y 64 bits generalmente tienen sus registros divididos en otros registros más pequeños. Así, los registros de un procesador de 32 bits, por ejemplo, pueden estar divididos a su vez en registros de 16 y 8 bits y puede hacer operaciones aritméticas, lógicas, de comparaciones, y otras, con cualquiera de sus registros en cualquiera de estos tamaños.
Cuando se habla de procesadores de, digamos 32 bits, nos referimos a su capacidad de procesar datos en hasta 32 bits simultáneamente (también puede procesar datos en 8 y 16 bits). La denominación de "microprocesador de 32 bits" no se refiere al tamaño del bus de datos del CPU ni del bus de direcciones, sino a su capacidad de trabajar normalmente con los datos en el número máximo de bits (salvo alguna excepción).
Por ejemplo, los primeros procesadores de la arquitectura x86, el Intel 8086 y el Intel 8088, eran procesadores de 16 bits, porque tenían registros de 16 bits (y de 8 bits) y sus unidades artimético lógicas podían realizar operaciones de 16 bits (y de 8 bits). Sin embargo, exteriormente, el 8086 tenía un bus de datos de 16 bits y podía mover datos desde y hacia el CPU en bloques de 8 y 16 bits), mientras que el 8088 tenía un bus de datos de solo 8 bits, y también podía mover datos de 8 y 16 bits desde y hacia el CPU, sin embargo, como su bus de datos era de solo 8 bits, para mover 16 bits de datos tenía que hacer dos operaciones de lectura o escritura, de 8 bits, por su limitado bus de datos. Esto era completamente transparente, los dos procesadores ejecutaban exactamente el mismo conjunto de instrucciones de 16 bits, solo que el 8088 era más lento cada vez que tenía que leer o escribir 16 bits de datos hacia o desde la memoria.
No hay comentarios:
Publicar un comentario