Este curso me parecio de gran ayuda para la carrera ya que pude aprender una serie de cosas de las cuales desconocia por completo, aunque a falta de tiempo no podia verse tan a fondo como me hubiera gustado, pero creo que aun asi se logro el fin que era aprender, creo que la materia requiere de un poco de paciencia ya que no todos los temas eran tan sencillos.
Muchas gracias profesor y nos vemos en otra materia.
lunes, 8 de diciembre de 2008
1.6.-Sistemas de almacenamiento de informació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.
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.
El equipo computacional: el hardware necesario para que el sistema de información pueda operar.
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.
1.5.-Puertos de comunicación
Un puerto es una conexión o un enchufe, el cual es utilizado para conectar dispositivo de Hardware como impresoras o Mouse, permitiendo el intercambio de datos con otro dispositivo. También existen puertos internos definidos mediante el Software.
Normalmente estos puertos se encuentran en la parte trasera del computador, aunque en la actualidad muchos computadores incorporan puertos USB y audio en la parte delantera.
En esta investigación estudiaremos algunos de los puertos más utilizados o conocidos, como: el PS-2, paralelo, serie, VGA, USB, RJ-11, RJ-5 y RCA.
1.4.-Canales DMA
Con ciertos dispositivos, hay que especificar el canal de acceso directo a la memoria (DMA) que desea que use el adaptador. El acceso directo a la memoria permite la transferencia de datos entre la memoria y un dispositivo sin la intervención de la unidad central de procesamiento del sistema (CPU). Cada chip de DMA de la placa madre del sistema tiene ocho circuitos (o ``canales'') para la transmisión de datos. El canal 4 de DMA se reserva para que lo use el sistema. Durante la configuración, puede usar cualquiera (o ninguno) de los canales.
1.3.-Niveles de interrupción (IRQ´S)
Para ganar la atención de la CPU, se utilizan líneas de solicitud de interrupción (IRQ-Interrupt Request). El bus de la PC ofrece las líneas 2 a 7. Respetan prioridades, siendo la línea 2 más importante que la línea 7. Cuando se activa una línea, el procesador deja todo lo demás y carga una subrutina especial para encargarse de (dar servicio a ) esa línea de interrupción en particular.
Algunas veces los dispositivos periféricos necesitan obtener la atención de la CPU en sincronía critica. Citamos un ejemplo: El controlador del teclado es bastante tonto. No tiene memoria prácticamente, así que cada vez que un tecleo llega al controlador, este necesita entregárselo a la CPU antes de que llegue otro tecleo. Básicamente, cada vez que el controlador del teclado recibe un tecleo, quiere decir a la CPU. “¡HEY! ¡DETEN TODO! ¡VEN A DARME SERVICIO AHORA ANTES DE QUE EL USUARIO OPRIMA OTRA TECLA! “ , así que “suena la alarma” - activa su línea de interrupción . La CPU se detiene y ejecuta el programa que pasa el tecleo a la memoria temporal (buffer) del teclado.
Si se esta instalando una tarjeta que necesita una IRQ, vea primero la línea de interrupción 2 en las computadoras PC o la 5 en las AT. Si esas no están disponibles pruebe la 3; si no se tiene COM2, no habrá conflicto. Algunos textos afirma que se puede robar la IRQ 7 del puerto paralelo. Ello es verdad únicamente si no se utiliza WINDOWS ni OS/2.
Al igual que con DMA, las maquinas de 16 bit's tienen líneas de interrupción adicionales. Se pueden usar únicamente si se esta insertando una tarjeta de 16 bit's en una ranura de 16 bit's. Uselas si es posible, a manera de dejar lugar en las ocho IRQ inferiores para otras tarjetas. Las PC y las XT únicamente tienen las IRQ de 0 a 7.
Repetimos lo dicho en la explicación de las direcciones I/O: Algunas tarjetas no tiene puentes ni interruptores DIP. Esto significa que no hay modo de hacerlas trabajar cuando otras tarjetas tienen conflictos con ellas. Por ejemplo, un cliente que visitaba regularmente había instalado una tarjeta IBM 5251 (Emulador de terminal de sistema 36) y una vieja Quadram Quadboard en una PC. El puerto de impresora en la Quadboard y la emuladora de terminal querían el mismo recurso - no recuerdo cual. De cualquier modo, ninguna tenía puentes, una tarjeta tuvo que ser tirada a la basura.
Moraleja: averigüe si las tarjetas de expansión que compra tienen ajustables sus DMA, IRQ y direcciones I/O.
Algunas veces los dispositivos periféricos necesitan obtener la atención de la CPU en sincronía critica. Citamos un ejemplo: El controlador del teclado es bastante tonto. No tiene memoria prácticamente, así que cada vez que un tecleo llega al controlador, este necesita entregárselo a la CPU antes de que llegue otro tecleo. Básicamente, cada vez que el controlador del teclado recibe un tecleo, quiere decir a la CPU. “¡HEY! ¡DETEN TODO! ¡VEN A DARME SERVICIO AHORA ANTES DE QUE EL USUARIO OPRIMA OTRA TECLA! “ , así que “suena la alarma” - activa su línea de interrupción . La CPU se detiene y ejecuta el programa que pasa el tecleo a la memoria temporal (buffer) del teclado.
Si se esta instalando una tarjeta que necesita una IRQ, vea primero la línea de interrupción 2 en las computadoras PC o la 5 en las AT. Si esas no están disponibles pruebe la 3; si no se tiene COM2, no habrá conflicto. Algunos textos afirma que se puede robar la IRQ 7 del puerto paralelo. Ello es verdad únicamente si no se utiliza WINDOWS ni OS/2.
Al igual que con DMA, las maquinas de 16 bit's tienen líneas de interrupción adicionales. Se pueden usar únicamente si se esta insertando una tarjeta de 16 bit's en una ranura de 16 bit's. Uselas si es posible, a manera de dejar lugar en las ocho IRQ inferiores para otras tarjetas. Las PC y las XT únicamente tienen las IRQ de 0 a 7.
Repetimos lo dicho en la explicación de las direcciones I/O: Algunas tarjetas no tiene puentes ni interruptores DIP. Esto significa que no hay modo de hacerlas trabajar cuando otras tarjetas tienen conflictos con ellas. Por ejemplo, un cliente que visitaba regularmente había instalado una tarjeta IBM 5251 (Emulador de terminal de sistema 36) y una vieja Quadram Quadboard en una PC. El puerto de impresora en la Quadboard y la emuladora de terminal querían el mismo recurso - no recuerdo cual. De cualquier modo, ninguna tenía puentes, una tarjeta tuvo que ser tirada a la basura.
Moraleja: averigüe si las tarjetas de expansión que compra tienen ajustables sus DMA, IRQ y direcciones I/O.
1.2.-Direcciones de entrada/salida (E/S)
El subsistema de ENTRADA/SALIDA (E/S) suministra al computador un mecanismo eficiente de comunicación entre el procesador central y el entorno exterior.La conexión de dispositivos periféricos a un computador no puede llevarse a cabo de forma directa haciendo uso del bus del procesador.
La interfaces de entrada y de salida proporciona un método para transferir información entre dispositivos de (E/S) de almacenamiento interno y de (E/S) externas. Los periféricos conectados a una computadora necesitan enlacé de comunicación especial para funcionar como una interfaces con la unidad de procesamiento central.
El propósito del enlace de comunicación es resolver las diferencias que existen en la computadora central y de cada periférico.
Se llama interfaces porque se comunica tanto con el canal del procesador como con el dispositivo periférico.
Las funciones de la interfase son almacenar los datos y realizar las conversiones que se le requieran. También detecta errores en la transmisión y es capaz de reiniciar la transacción en casos de error. Más aún, la interfase puede testear, arrancar y detener el dispositivo según las directivas impartidas por la CPU. En algunos casos la interfase puede consultar a la CPU si algún dispositivo está requiriendo atención urgente.
Existen distintos tipos de comandos que circulan por el bus, a saber:
- De control: son para activar el periférico y decirle que debe hacer (por ej. rebobinar una cinta); varían según cada tipo de periférico.
- De verificación: verifican las diversas condiciones de estado en la interfase o en el periférico (por ej., una vez seleccionada la ruta la CPU puede desear verificarla para ver si existe energía (power on) o que el periférico esté en línea (on line).
- Salida de datos: Hace que la interfase responda tomando un ítem de datos del bus.
- Entrada de datos: la interfase recibe un ítem de datos del periférico y lo coloca en su propio registro separador, avisa a la CPU, la que emite el comando de entrada de datos el cual transfiere el contenido de ese registro al bus de donde es tomado por la CPU y almacenado en su registro acumulador. Ejemplo: Salida de datos a una unidad de cinta.
El computador arranca la unidad de cinta emitiendo un comando de control. El procesador entonces monitorea el estado de la cinta por medio de comandos de verificación. Cuando la cinta está en posición correcta, el computador emite un comando de salida de datos. La interfase responde a la dirección y a las líneas de comando y transfiere los datos de la línea de datos del bus de E/S a su registro separador. La interfase se comunica entonces para aceptar un nuevo ítem de datos para almacenar en la cinta.
1.1.-El BIOS
El sistema Básico de entrada/salida Basic Input-Output System (BIOS) es un código de interfaz que localiza y carga el sistema operativo en la R.A.M.; es un software muy básico instalado en la placa base que permite que ésta cumpla su cometido. Proporciona la comunicación de bajo nivel, el funcionamiento y configuración del hardware del sistema que, como mínimo, maneja el teclado y proporciona salida básica (emitiendo pitidos normalizados por el altavoz de la computadora si se producen fallos) durante el arranque. El BIOS usualmente está escrito en lenguaje ensamblador. El primer término BIOS apareció en el sistema operativo CP/M, y describe la parte de CP/M que se ejecutaba durante el arranque y que iba unida directamente al hardware (las máquinas de CP/M usualmente tenían un simple cargador arrancable en la ROM, y nada más). La mayoría de las versiones de MS-DOS tienen un archivo llamado "IBMBIO.COM" o "IO.SYS" que es análogo al CP/M BIOS.
En los primeros años de vida de los sistemas operativos para PC (como el DOS), el BIOS todavía permanecía activo tras el arranque y funcionamiento del sistema operativo. El acceso a dispositivos como la disquetera y el disco duro se hacían a través del BIOS. Sin embargo, los sistemas operativos SO más modernos realizan estas tareas por sí mismos, sin necesidad de llamadas a las rutinas del BIOS.
Al encender la computadora, la BIOS se carga automáticamente en la memoria principal y se ejecuta desde ahí por el procesador (aunque en algunos casos el procesador ejecuta la BIOS leyéndola directamente desde la ROM que la contiene), cuando realiza una rutina de verificación e inicialización de los componentes presentes en la computadora, a través de un proceso denominado POST (Power On Self Test). Al finalizar esta fase busca el código de inicio del sistema operativo (bootstrap) en algunos de los dispositivos de memoria secundaria presentes, lo carga en memoria y transfiere el control de la computadora a éste.
Se puede resumir diciendo que el BIOS es el firmware presente en computadoras IBM PC y compatibles, que contiene las instrucciones más elementales para el funcionamiento de las mismas por incluir rutinas básicas de control de los dispositivos de entrada y salida. Está almacenado en un chip de memoria ROM o Flash, situado en la placa base de la computadora. Este chip suele denominarse en femenino "la BIOS", pues se refiere a una memoria (femenino) concreta; aunque para referirnos al contenido, lo correcto es hacerlo en masculino "el BIOS", ya que nos estamos refiriendo a un sistema (masculino) de entrada/salida.
El principal defecto de este componente es que mantiene prácticamente fiel a su estructura que lucía a principios de los 80. Incluso los microprocesadores más modernos de 64 bits de doble núcleo funcionan en modo real de 16 bits cuando encendemos el PC, emulando al procesador Intel 8086 de 1978. En estas circunstancias, la memoria principal que va más allá del primer MB no puede utilizarse durante el arranque de la máquina. Además, las tarjetas de video, de expansión y, en general, los dispositivos que deben permanecer accesibles en este proceso, tienen que incorporar una memoria de lectura de 128 kbytes.
Otra importante desventaja es que siguen programándose en lenguaje ensamblador, más óptimo en ejecución pero más complejo de desarrollar y mantener. Aun así, se ha añadido nuevas funciones a la BIOS que han contribuido de forma decisiva a incrementar su complejidad. Los BIOS anteriores a 1995 no reconocen los discos duros de más de 4 TB de capacidad.
1.-Arquitectura de una PC bajo el esquema de Von Newman
La arquitectura Von Neumann consta de las siguientes partes e instrucciones, las mismas que deben responder a un determinado esquemas de ejecución. Así una secuencia de órdenes constituirá lo que se llamara programa el cual debe disponer de algún tipo de rutina que permita romper su propia ejecución: La unidad aritmético-lógica o ALU, la unidad de control, la memoria, un dispositivo de entrada/salida y el bus de datos que proporciona un medio de transporte de los datos entre las distintas partes.
un ordenador con arquitectura Von Neumann realiza o emula los siguientes pasos secuencialmente:
1) Obtiene la siguiente instrucción desde la memoria en la dirección indicada por el contador de programa y la guarda en el registro de instrucción.
2) Aumenta el contador de programa en la longitud de la instrucción para apuntar a la siguiente.
3) Descodifica la instrucción mediante la unidad de control. ésta se encarga de coordinar el resto de componentes del ordenador para realizar una función determinada.
4) Se ejecuta la instrucción. ésta puede cambiar el valor del contador del programa, permitiendo así operaciones repetitivas. El contador puede cambiar también cuando se cumpla una cierta condición aritmética, haciendo que el ordenador pueda 'tomar decisiones', que pueden alcanzar cualquier grado de complejidad, mediante la aritmética y lógica anteriores.
5) Vuelve al paso N° 1.
5.-Memoria virtual.
La Memoria virtual es un concepto que permite al software usar más memoria principal que la que realmente posee el ordenador. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria cache (tanto dentro como fuera del CPU), la memoria física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero también más grande y barato.
Muchas aplicaciones requieren el acceso a más información (código y datos) que la que se puede mantener en memoria física. Esto es así sobre todo cuando el sistema operativo permite múltiples procesos y aplicaciones ejecutándose simultáneamente. Una solución al problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su información en disco, moviéndola a la memoria principal cuando sea necesario. Hay varias formas de hacer esto. Una opción es que la aplicación misma sea responsable de decidir qué información será guardada en cada sitio (segmentación), y de traerla y llevarla. La desventaja de esto, además de la dificultad en el diseño e implementación del programa, es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre sí: cada programador podría realizar su diseño teniendo en cuenta que es el único programa ejecutándose en el sistema. La alternativa es usar memoria virtual, donde la combinación entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha más memoria principal (RAM) que la que realmente posee. Este método es invisible a los procesos. La cantidad de memoria máxima que se puede hacer ver que hay tiene que ver con las características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo que da aproximadamente 4000 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho más fácil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria.
Aunque la memoria virtual podría estar implementada por el software del sistema operativo, en la práctica casi siempre se usa una combinación de hardware y software, dado el esfuerzo extra que implicaría para el procesador.
4.-Memoria caché.
La memoria caché es una clase de memoria RAM estática (SRAM) de acceso aleatorio y alta velocidad, situada entre el CPU y la RAM; se presenta de forma temporal y automática para el usuario, que proporciona acceso rápido a los datos de uso más frecuente.
La ubicación de la caché entre el microprocesador y la RAM, hace que sea suficientemente rápida para almacenar y transmitir los datos que el microprocesador necesita recibir casi instantáneamente.
La memoria caché es rápida, unas 5 ó 6 veces más que la DRAM (RAM dinámica), por eso su capacidad es mucho menor. Por eso su precio es elevado, hasta 10 ó 20 veces más que la memoria principal dinámica para la misma cantidad de memoria.
3.2.-Organización de memoria.
Una memoria principal se compone de un conjunto de celdas básicas dotadas de una determinada organización. Cada celda soporta un bit de información. Los bits se agrupan en unidades direccionables denominadas palabras. La longitud de palabra la determina el número de bits que la componen y constituye la resolución de la memoria (mínima cantidad de información direccionable). La longitud de palabra suele oscilar desde 8 bits (byte) hasta 64 bits.
Cada celda básica es un dispositivo físico con dos estados estables (o semi-estables) con capacidad para cambiar el estado (escritura) y determinar su valor (lectura). Aunque en los primeros computadores se utilizaron los materiales magnéticos como soporte de las celdas de memoria principal (memorias de ferritas, de película delgada, etc.) en la actualidad sólo se utilizan los materiales semiconductores.
3.1.-Memoria expandida y extendida.
La memoria expandida fue un método desarrollado alrededor de 1984 que proporcionaba memoria paginada extra a los programas de MS-DOS.
Éstos programas, que corrían en la IBM PC original, y sus sucesores como el IBM XT y el IBM AT, eran típicamente aplicaciones como hojas de cálculo y bases de datos que necesitaban una gran cantidad de memoria para trabajar correctamente.
El IBM PC y el IBM XT tenían una arquitectura de memoria de modo real, que solo permitía a los programas usar 1 megabyte de espacio de dirección, de los cuales solo hasta 640 KB estaba disponible como RAM normal para las aplicaciones. El resto entre 640 KB y 1 megabyte era reservado para periféricos, destacándose la memoria para las tarjetas de vídeo. El IBM AT, con su microprocesador Intel 80286 soportaba un modo protegido lo que le permitía direccionar hasta 16 MB, pero este computador también usaba el MS-DOS, un sistema operativo que no usaba la memoria extendida (por arriba del megabyte) directamente.
La idea detrás de la memoria expandida era usar, también para la memoria del programa, parte de los 384 KB restantes normalmente dedicados a los periféricos. Para poder usar potencialmente mucho más memoria que los 384 KB que el espacio de direccionamiento permitía, fue ideado un esquema conmutación de bancos, donde solamente estarían accesibles a un mismo tiempo, porciones seleccionadas de la memoria adicional. Originalmente, era posible una sola ventana de 64 KB de memoria, más adelante esto fue más flexible. Las aplicaciones tuvieron que ser escritas de una manera específica para tener acceso a la memoria expandida.
En un IBM PC o compatible con un microprocesador 80286 o posterior, la memoria extendida se refiere a la memoria por arriba del primer megabyte de espacio de dirección.
La memoria extendida está solamente disponible en PCs basadas en el Intel 80286 o un procesador más alto. Solamente estos chips pueden accesar más de 1 MB de RAM. En un microprocesador 286 o posterior, en PCs equipados con más que 640 KB de RAM, la memoria adicional por arriba de esos 640 KB es generalmente remapeada por arriba de 1MB, haciendo que toda ella sea disponible a programas corriendo en modo protegido. Incluso sin este remapeo, las máquinas con más de 1 MB de RAM pueden tener acceso a la memoria sobre el 1 MB.
En modo real, la memoria extendida está disponible solamente por medio de EMS, UMA, XMS, o HMA. Solamente las aplicaciones ejecutándose en modo protegido pueden usar directamente la memoria extendida. En este caso, la memoria extendida es proporcionada por un sistema operativo en modo protegido que la supervisa, como Microsoft Windows o Linux. El procesador hace disponible esta memoria a través de la Global Descriptor Table (GDT) (Tabla Descriptor Global) y de una o más Local Descriptor Tables (LDTs) (Tablas de Descriptor Local). La memoria es "protegida" en el sentido que los segmentos de memoria asignados a un descriptor local no pueden ser accesadors por otro programa porque éste utiliza un LDT dfiferente, y los segmentos de memoria asignados a un descriptor global pueden tener sus derechos de acceso restringidos, causando un hardware trap (trampa de hardware), típicamente una violación General protection fault (falla de protección general). Esto evita que los programas corriendo en modo protegido interfieran con la memoria de otros.
Un sistema operativo de modo protegido como Windows puede también correr programas en modo real y proporcionarles memoria expandida. El DOS Protected Mode Interface (Interface DOS de Modo Protegido) es el método prescrito de Microsoft para que un programa de MS-DOS tenga acceso a memoria extendida bajo un ambiente Multitarea.
1.2.-ROM
La ROM es una memoria de sólo lectura. Algunas ROM son programables, es decir, parte de la información que contienen puede cambiarse por el usuario y por tanto, necesita estar alimentada constantemente. Para ello se utiliza una pila que actúe como fuente de alimentación.Esta pila funciona mientras el ordenador está apagado y utiliza la alimentación de la red para recargarse cuando el ordenador está conectado. De esta forma, la pila puede durar indefinidamente (salvo problemas de humedad, cortocircuito, etc). Actualmente los ordenadores no emplean chips de memoria ROM pura, han sido reemplazados por las memorias EEPROM (Memorias ROM eléctricamente borrables y programables).
1.1.-RAM
Constituye la mayor parte de la memoria principal y es una memoria sobre la cual se puede leer y escribir. Es una memoria volátil es decir, la información que contiene desaparece cuando cesa la alimentación.
La tecnología de RAM se divide en dos variantes: estáticas y dinámicas
Las Memorias Estáticas (SRAM) son más rápidas porque no consumen ciclos de refresco, pero son más caras. Se utilizan en las memorias caché y de vídeo.
Las Memorias Dinámicas (DRAM) son más baratas pero más lentas que las anteriores puesto que consumen ciclos de refresco.
La memoria RAM como dispositivo lo podemos dividir en dos partes:
El área de control: encargada de localizar la posición de memoria que se corresponde con la dirección que se envía por el bus de direcciones.Consta de un Registro de Direcciones de Memoria y un Decodificador que tiene como entrada los n bits del bus de direcciones y 2 elevado a n salidas para cada una de las posiciones de memoria.
El área de almacenamiento: está formada por una matriz de celdas básicas de forma que cada fila se corresponde con una posición de memoria. Cada celda básica está formada por un dispositivo de almacenamiento binario que puede mantener un estado lógico (0 ó 1) durante un tiempo limitado y cuyo valor se transmitirá al Registro de Intercambio de Datos cuando la fila se activa para una operación de lectura. Cuando la operación es de escritura, el proceso es inverso, es decir, el contenido del Registro de Intercambio de Datos pasa a la posición de memoria activada.
El Registro de Intercambio de Datos es el utilizado por el bus de Datos del ordenador para tomar y dejar los datos que se leen y escriben en memoria.
6.-Contadores
Un contador es un circuito secuencial de aplicacion general, cuyas salidas representan en un determinado codigo el numero de pulsos que se meten a la entrada
Estan constituidos por una serie de biestables conectados entre si de modo que las salidas de estos cambian de estado cuando se aplican impulso. a la entrada.
La capacidad de un contador es el numero mas elevado, expresado en cualquiera de los codigos binarios, que puede ser representado en sus salidas.
El modulo, o número de estados totales que puede representar el contador, es igual al numero máximo de impulsos que se puede representar más uno (el cero). Si "n" es el número de flip-flops empleado para hacer el contador, y "M" el módulo del contador, se debe verificar:
M " 2”
Cuando el contador llega al valor máximo de su capacidad, comienza a contar de nuevo desde cero al aplicarle el siguiente impulso.
Dependiendo del modo d e operación, lo s cont adores pueden ser ascendetes ( si su contenido se incrementa con cada impulso), descende ntes (si su contenido disminuye), o bien una combinacion de ambos (up/down counters).
Por otro lado, los contadores se dividen en sincronos y asincronos. Los primeros, son aquellos en los que los impulsos de reloj se aplican simultameamente a todos los biestables, y por tanto, todas las salidas cambian al mismo tiempo.
En los asincronos, por contra, la señal de reloj se aplica a la entrada del primer biestable, la salida de éste a la entrada de reloj del siguiente, y asi sucesivamente el tiempo de propagacion de estos dispositivos, es superior al de los sincronos (la señal tiene que pasar por todos los bits menos significativos hasta llegar a un deteminado bit).
Otra clasificacion es según la naturaleza de los números que cuenta el dispositivo. Existen contadores binarios (el número de estados es múltiplo de 2), decimales (el numero de estados es múltiplo de 10), y de modulo M (un numero M cualquiera de estados).
Además, en todos los casos anteriores, la cuenta no tiene por qué empezar e terminar en 0. Por ejemplo se puede diseñar un contador de módulo 3 gue cuente 5-6-7.
El diseño de contadores sincronos, se hace de igual forma que para cualquier circuito secuencial. Como caso particular, vamos a ver el diseño de contares binarios asincronos.
Estan constituidos por una serie de biestables conectados entre si de modo que las salidas de estos cambian de estado cuando se aplican impulso. a la entrada.
La capacidad de un contador es el numero mas elevado, expresado en cualquiera de los codigos binarios, que puede ser representado en sus salidas.
El modulo, o número de estados totales que puede representar el contador, es igual al numero máximo de impulsos que se puede representar más uno (el cero). Si "n" es el número de flip-flops empleado para hacer el contador, y "M" el módulo del contador, se debe verificar:
M " 2”
Cuando el contador llega al valor máximo de su capacidad, comienza a contar de nuevo desde cero al aplicarle el siguiente impulso.
Dependiendo del modo d e operación, lo s cont adores pueden ser ascendetes ( si su contenido se incrementa con cada impulso), descende ntes (si su contenido disminuye), o bien una combinacion de ambos (up/down counters).
Por otro lado, los contadores se dividen en sincronos y asincronos. Los primeros, son aquellos en los que los impulsos de reloj se aplican simultameamente a todos los biestables, y por tanto, todas las salidas cambian al mismo tiempo.
En los asincronos, por contra, la señal de reloj se aplica a la entrada del primer biestable, la salida de éste a la entrada de reloj del siguiente, y asi sucesivamente el tiempo de propagacion de estos dispositivos, es superior al de los sincronos (la señal tiene que pasar por todos los bits menos significativos hasta llegar a un deteminado bit).
Otra clasificacion es según la naturaleza de los números que cuenta el dispositivo. Existen contadores binarios (el número de estados es múltiplo de 2), decimales (el numero de estados es múltiplo de 10), y de modulo M (un numero M cualquiera de estados).
Además, en todos los casos anteriores, la cuenta no tiene por qué empezar e terminar en 0. Por ejemplo se puede diseñar un contador de módulo 3 gue cuente 5-6-7.
El diseño de contadores sincronos, se hace de igual forma que para cualquier circuito secuencial. Como caso particular, vamos a ver el diseño de contares binarios asincronos.
3.-Flip-Flops (JK, RS, T, D)
Un biestable, también llamado báscula (flip-flop en inglés), es un multivibrador capaz de permanecer en un estado determinado o en el contrario durante un tiempo indefinido. Esta característica es ampliamente utilizada en electrónica digital para memorizar información. El paso de un estado a otro se realiza variando sus entradas. Dependiendo del tipo de dichas entradas los biestables se dividen en:
* Asíncronos: sólo tienen entradas de control. El más empleado es el biestable RS.
* Síncronos: además de las entradas de control posee una entrada de sincronismo o de reloj. Si las entradas de control dependen de la de sincronismo se denominan síncronas y en caso contrario asíncronas. Por lo general, las entradas de control asíncronas prevalecen sobre las síncronas.
La entrada de sincronismo puede ser activada por nivel (alto o bajo) o por flanco (de subida o de bajada). Dentro de los biestables síncronos activados por nivel están los tipos RS y D, y dentro de los activos por flancos los tipos JK, T y D.
Biestable JK
Dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuyas entradas principales, J y K, a las que debe el nombre, permiten al ser activadas:
* J: El grabado (set en inglés), puesta a 1 ó nivel alto de la salida.
* K: El borrado (reset en inglés), puesta a 0 ó nivel bajo de la salida.
Si no se activa ninguna de las entradas, el biestable permanece en el estado que poseía tras la última operación de borrado o grabado. A diferencia del biestable RS, en el caso de activarse ambas entradas a la vez, la salida adquirirá el estado contrario al que tenía.
Biestable RS
Dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuyas entradas principales, R y S, a las que debe el nombre, permiten al ser activadas:
* R: el borrado (reset en inglés), puesta a 0 ó nivel bajo de la salida.
* S: el grabado (set en inglés), puesta a 1 ó nivel alto de la salida.
Si no se activa ninguna de las entradas, el biestable permanece en el estado que poseía tras la última operación de borrado o grabado. En ningún caso deberían activarse ambas entradas a la vez, ya que esto provoca que las salidas directa (Q) y negada (Q') queden con el mismo valor: a bajo, si la báscula está construida con puertas NO-O (NOR), o a alto, si con puertas NO-Y (NAND). El problema de que ambas salidas queden al mismo estado está en que al desactivar ambas entradas no se podrá determinar el estado en el que quedaría la salida. Por eso, en las tablas de verdad, la activación de ambas entradas se contempla como caso no deseado (N. D.).
Biestable T
Dispositivo de almacenamiento temporal de dos estados (alto y bajo). El biestable T cambia de estado ("toggle" en inglés) cada vez que la entrada de sincronismo o de reloj se dispara. Si la entrada T está a nivel bajo, el biestable retiene el nivel previo. Puede obtenerse al unir las entradas de control de un biestable JK, unión que se corresponde a la entrada T.
Biestable D
Dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuya salida adquiere el valor de la entrada D cuando se activa la entrada de sincronismo, C. En función del modo de activación de dicha entrada de sincronismo, existen dos tipos de biestables D:
* Activo por nivel (alto o bajo), también denominado registro o cerrojo (latch en inglés).
* Activo por flanco (de subida o de bajada).
* Asíncronos: sólo tienen entradas de control. El más empleado es el biestable RS.
* Síncronos: además de las entradas de control posee una entrada de sincronismo o de reloj. Si las entradas de control dependen de la de sincronismo se denominan síncronas y en caso contrario asíncronas. Por lo general, las entradas de control asíncronas prevalecen sobre las síncronas.
La entrada de sincronismo puede ser activada por nivel (alto o bajo) o por flanco (de subida o de bajada). Dentro de los biestables síncronos activados por nivel están los tipos RS y D, y dentro de los activos por flancos los tipos JK, T y D.
Biestable JK
Dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuyas entradas principales, J y K, a las que debe el nombre, permiten al ser activadas:
* J: El grabado (set en inglés), puesta a 1 ó nivel alto de la salida.
* K: El borrado (reset en inglés), puesta a 0 ó nivel bajo de la salida.
Si no se activa ninguna de las entradas, el biestable permanece en el estado que poseía tras la última operación de borrado o grabado. A diferencia del biestable RS, en el caso de activarse ambas entradas a la vez, la salida adquirirá el estado contrario al que tenía.
Biestable RS
Dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuyas entradas principales, R y S, a las que debe el nombre, permiten al ser activadas:
* R: el borrado (reset en inglés), puesta a 0 ó nivel bajo de la salida.
* S: el grabado (set en inglés), puesta a 1 ó nivel alto de la salida.
Si no se activa ninguna de las entradas, el biestable permanece en el estado que poseía tras la última operación de borrado o grabado. En ningún caso deberían activarse ambas entradas a la vez, ya que esto provoca que las salidas directa (Q) y negada (Q') queden con el mismo valor: a bajo, si la báscula está construida con puertas NO-O (NOR), o a alto, si con puertas NO-Y (NAND). El problema de que ambas salidas queden al mismo estado está en que al desactivar ambas entradas no se podrá determinar el estado en el que quedaría la salida. Por eso, en las tablas de verdad, la activación de ambas entradas se contempla como caso no deseado (N. D.).
Biestable T
Dispositivo de almacenamiento temporal de dos estados (alto y bajo). El biestable T cambia de estado ("toggle" en inglés) cada vez que la entrada de sincronismo o de reloj se dispara. Si la entrada T está a nivel bajo, el biestable retiene el nivel previo. Puede obtenerse al unir las entradas de control de un biestable JK, unión que se corresponde a la entrada T.
Biestable D
Dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuya salida adquiere el valor de la entrada D cuando se activa la entrada de sincronismo, C. En función del modo de activación de dicha entrada de sincronismo, existen dos tipos de biestables D:
* Activo por nivel (alto o bajo), también denominado registro o cerrojo (latch en inglés).
* Activo por flanco (de subida o de bajada).
2.-Circuitos asíncronos
los sistemas secuenciales asíncronos no poseen entrada de reloj, y los cambios en las variables de estado interno y en los valores de salida se producen, sencillamente, al variar los valores de las entradas del circuito
1.-Circuitos síncronos
Los circuitos síncronos, requieren una señal de control procedente de un generador externo al propio circuito, que funciona como llave, de modo que si no se aplica dicha señal no se hacen efectivos los valores presentes en las entradas. Este método se emplea cuando el sistema electrónico es complejo y los tiempos de conmutación de los diversos dispositivos que lo constituyen son distintos. La señal de control, también denominada reloj (Clock, o Clock Pulse en ingles), se aplica a las entradas del mismo nombre de cada bloque integrado para sincronizar la transmisión de datos 0 información a través del sistema. La frecuencia de la señal eléctrica debe adaptarse a la velocidad de conmutación del dispositivo mas lento del circuito.
VI. CIRCUITOS SECUENCIALES.
El comportamiento de un circuito secuencial se determina mediante las entradas, las salidas y los estados de sus flip-flops. Tanto las salidas como el estado siguiente son función de las entradas y del estado presente. El análisis de los circuitos secuenciales consiste en obtener una tabla o un diagrama de las secuencias de tiempo de las entradas, salidas y estados internos. También es posible escribir expresiones booleanas que describen el comportamiento de los circuitos secuenciales. Sin embargo, esas expresiones deben incluir la secuencia de tiempo necesaria ya sea en forma directa o indirecta.
Un diagrama lógico se reconoce como el circuito de un circuito secuencial e incluye los flip-flops. Los flip-flops puede ser cualquier tipo y el diagrama lógico puede o no incluir compuertas combinacionales.
Un diagrama lógico se reconoce como el circuito de un circuito secuencial e incluye los flip-flops. Los flip-flops puede ser cualquier tipo y el diagrama lógico puede o no incluir compuertas combinacionales.
4.-Decodificadores
Un decodificador o descodificador es un circuito combinacional, cuya función es inversa a la del codificador, esto es, convierte un código binario de entrada (natural, BCD, etc.) de N bits de entrada y M líneas de salida (N puede ser cualquier entero y M es un entero menor o igual a 2N), tales que cada línea de salida será activada para una sola de las combinaciones posibles de entrada. Estos circuitos, normalmente, se suelen encontrar como decodificador / demultiplexor. Esto es debido a que un demultiplexor puede comportarse como un decodificador.
Si por ejemplo tenemos un decodificador de 2 entradas con 22=4 salidas, en el que las entradas, su funcionamiento sería el que se indica en la siguiente tabla, donde se ha considerado que las salidas se activen con un "uno" lógico:
Si por ejemplo tenemos un decodificador de 2 entradas con 22=4 salidas, en el que las entradas, su funcionamiento sería el que se indica en la siguiente tabla, donde se ha considerado que las salidas se activen con un "uno" lógico:
3.-Codificadores
Un codificador es un circuito combinacional con 2N entradas y N salidas, cuya misión es presentar en la salida el código binario correspondiente a la entrada activada.
Existen dos tipos fundamentales de codificadores: codificadores sin prioridad y codificadores con prioridad. En el caso de codificadores sin prioridad, puede darse el caso de salidas cuya entrada no pueda ser conocida: por ejemplo, la salida 0 podría indicar que no hay ninguna entrada activada o que se ha activado la entrada número 0. Además, ciertas entradas pueden hacer que en la salida se presente la suma lógica de dichas entradas, ocasionando mayor confusión. Por ello, este tipo de codificadores es usado únicamente cuando el rango de datos de entrada está correctamente acotado y su funcionamiento garantizado.
Para evitar los problemas anteriormente comentados, se diseñan los codificadores con prioridad. En estos sistemas, cuando existe más de una señal activa, la salida codifica la de mayor prioridad (generalmente correspondiente al valor decimal más alto). Adicionalmente, se codifican dos salidas más: una indica que ninguna entrada está activa, y la otra que alguna entrada está activa. Esta medida permite discernir entre los supuestos de que el circuito estuviera deshabilitado por la no activación de la señal de capacitación, que el circuito no tuviera ninguna entrada activa, o que la entrada número 0 estuviera activada.
También entendemos como codificador (códec), un esquema que regula una serie de transformaciones sobre una señal o información. Estos pueden transformar un señal a una forma codificada usada para la transmisión o cifrado o bien obtener la señal adecuada para la visualización o edición (no necesariamente la forma original) a partir de la forma codificada.
En este caso, los codificadores son utilizados en archivos multimedia para comprimir audio, imagen o vídeo, ya que la forma original de este tipo de archivos es demasiado grande para ser procesada y transmitida por los sistema de comunicación disponibles actualmente. Se utilizan también en la compresión de datos para obtener un tamaño de archivo menor.
Según esta nueva definición, podemos dividir los codificadores en códecs sin pérdidas y códecs con pérdidas, según si la información que se recupera coincide exactamente con la original o es una aproximación.
2.-Demultiplexores
En electrónica digital, un demultiplexor es un circuito combinacional que tiene una entrada de información de datos d y n entradas de control que sirven para seleccionar una de las 2n salidas, por la que ha de salir el dato que presente en la entrada. Esto se consigue aplicando a las entrada de control la combinación binaria correspondiente a la salida que se desea seleccionar. Por ejemplo, si queremos que la información que tenemos en la entrada d, salga por la salida S4, en las entrada de control se ha de poner, de acuerdo con el peso de las misma, el valor 100, que es el 4 en binario.
En el campo de las telecomunicaciones el demultiplexor es un dispositivo que puede recibir a través de un medio de transmisión compartido una señal compleja multiplexada y separar las distintas señales integrantes de la misma encaminándolas a las salidas correspondientes.
La señal compleja puede ser tanto analógica como digital y estar multiplexada en cualquiera de las distintas formas posibles para cada una de ellas.
Diagrama lógico de un demultiplexor 1 a 4
El demultiplexor, es un circuito combinacional que aunque la función básica es la que hemos explicado, puede utilizarse en muchos casos como decodificador y adopta cualquiera de las funciones que un decodificador realiza.
Una aplicación muy práctica de los demultiplexores utilizados como decodificadores, si lo combinamos con una puerta NO-Y NAND, es la generación de funciones lógicas, de modo, que si nos dan la función lógica F=S3(2,4,5,7), las salidas correspondientes a los unos lógicos se conectarían a la puerta NO-Y. En este caso la entrada de información se puede utilizar como entrada inhibidora si mantenemos a cero lógico, y subiéndola a uno, cuando queremos inhibir la generación de la función.
Una de las funciones que realiza el decodificador hexadecimal como demultiplexor, es la función de conectar, a sendos contadores, C0 a C15, que reciben los impulsos de una entrada común a todos. Cada uno posee una entrada de inhibición que según el estado en que se encuentra (0,1), permite o no que se realice el contaje de los implusos. Cada entrada de inhibición se conecta a una salida del demultiplexor.
1.-Multiplexores
En electrónica digital, un multiplexor, es un circuito usado para el control de un flujo de información que equivale a un conmutador. En su forma más básica se compone de dos entradas de datos (A y B), una salida de datos y una entrada de control. Cuando la entrada de control se pone a 0 lógico, la señal de datos A es conectada a la salida; cuando la entrada de control se pone a 1 lógico, la señal de datos B es la que se conecta a la salida...
El multiplexor es una aplicación particular de los decodificadores, tal que existe una entrada de habilitación (EN) por cada puerta AND y al final se hace un OR entre todas las salidas de las puertas AND.
La función de un multiplexor da lugar a diversas aplicaciones:
1. Selector de entradas.
2. Serializador: Convierte datos desde el formato paralelo al formato serie.
3. Transmisión multiplexada: Utilizando las mismas líneas de conexión, se transmiten diferentes datos de distinta procedencia.
4. Realización de funciones lógicas: Utilizando inversores y conectando a 0 ó 1 las entradas según interese, se consigue diseñar funciones complejas, de un modo más compacto que con las tradicionales puertas lógicas.
V. CIRCUITOS COMBINATORIOS.
Un circuito combinatorio es un arreglo de compuertas lógicas con un conjunto de entradas y salidas. En cualquier momento, los valores binarios de las salidas son una combinación binarias de las entradas.
3.1.-Mapas de Karnaugh
Un mapa de Karnaugh (también conocido como tabla de Karnaugh o diagrama de Veitch, abreviado como K-Mapa o KV-Mapa) es un diagrama utilizado para la minimización de funciones algebraicas booleanas. El mapa de Karnaugh fue inventado en 1950 por Maurice Karnaugh, un físico y matemático de los laboratorios Bell.
Los mapas K aprovechan la capacidad del cerebro humano de trabajar mejor con patrones que con ecuaciones y otras formas de expresión analítica. Externamente, un mapa de Karnaugh consiste de una serie de cuadrados, cada uno de los cuales representa una línea de la tabla de verdad. Puesto que la tabla de verdad de una función de N variables posee 2N filas, el mapa K correspondiente debe poseer también 2N cuadrados. Cada cuadrado alberga un 0 ó un 1, dependiendo del valor que toma la función en cada fila. Las tablas de Karnaugh se pueden utilizar para funciones de hasta 6 variables.
2.3.-Función booleana
Se denomina función lógica o booleana a aquella función matemática cuyas variables son binarias y están unidas mediante los operadores del álgebra de Boole suma lógica (+), producto lógico (·) o negación(').
Modos de representación
Existen distintas formas de representar una función lógica, entre las que podemos destacar las siguientes:
* Algebraica
* Por tabla de verdad
* Numérica
* Gráfica
El uso de una u otra, como veremos, dependerá de las necesidades concretas en cada caso.
Algebraica [editar]
Se utiliza cuando se realizan operaciones algebraicas. A continuación se ofrece un ejemplo con distintas formas en las que se puede expresar algebraicamente una misma función de tres variables.
a) F = [(A + BC’)’ + ABC]’ + AB’C
b) F = A’BC’ + AB’C’ + AB’C + ABC’
c) F = (A + B + C)(A + B + C’)(A + B’ + C’)(A’ + B’ + C’)
d) F = BC’ + AB’
e) F = (A + B)(B’ + C’)
f) F = [(BC’)’ · (AB’)’]’
g) F = [(A + B)’ + (B’ + C’)’]’
La expresión a) puede proceder de un problema lógico planteado o del paso de unas especificaciones a lenguaje algebraico. Las formas b) y c) reciben el nombre expresiones canónicas de suma de productos (sum-of-products, SOP, en inglés), la b), y de productos de sumas (product-of-sums, POS, en inglés), la c); su característica principal es la aparición de cada una de las variables (A, B y C) en cada uno de los sumandos o productos. Las d) y e) son funciones simplificadas, esto es, reducidas a su mínima expresión. Las dos últimas expresiones tienen la particularidad de que exclusivamente utiliza funciones NO-Y, la f), o funciones NO-O, la g).
Por tabla de verdad [editar]
Una tabla de verdad contiene todos los valores posibles de una función lógica dependiendo del valor de sus variables. El número de combinaciones posibles para una función de n variables vendrá dado por 2n. Una función lógica puede representarse algebraicamente de distintas formas como acabamos de ver, pero sólo tiene una tabla de verdad. La siguiente tabla corresponde a la función lógica del punto anterior.
La forma más cómodo para ver la equivalencia entre una tabla de verdad y una expresión algebraica es cuando esta última se da en su forma canónica. Así, la función canónica de suma de productos
F = A’BC’ + AB’C’ + AB’C + ABC’
nos indica que será 1 cuando lo sea uno de sus sumandos, lo que significa que tendrá por lo tanto cuatro combinaciones que lo serán (010 para A’BC’, 100 para AB’C’, 101 para AB’C y 110 para ABC’) siendo el resto de combiaciones 0. Con la función canónica de producto de sumas se puede razonar de forma análoga, pero en este caso observando que la función será 0 cuando lo sea uno de sus productos.
También es fácil obtener la tabla de verdad a partir de la función simplificada, pero no así a la inversa.
Numérica [editar]
La representación numérica es una forma simplificada de representar las expresiones canónicas. Si consideramos el criterio de sustituir una variable sin negar por un 1 y una negada por un 0, podremos representar el término, ya sea una suma o un producto, por un número decimal equivalente al valor binario de la combinación. Por ejemplo, los siguientes términos canónicos se representarán del siguiente modo (observe que se toma el orden de A a D como de mayor a menor peso):
AB’CD = 10112 = 1110
A’ + B + C’ + D’ = 01002 = 410
Para representar una función canónica en suma de productos utilizaremos el símbolo Σn (sigma) y en producto de sumas Πn (pi), donde n indicará el número de variables. Así, la representación numérica correspondiente a la tabla de verdad del punto anterior quedará como:
F = Σ3(2, 4, 5, 6) = Π3(0, 1, 3, 7)
Matemáticamente se demuestra, que para todo término i de una función, se cumple la siguiente ecuación:
F = [Σn(i)]' = Πn(2n-1-i )
A modo de ejemplo se puede utilizar esta igualdad para obtener el producto de sumas a partir de la suma de productos del ejemplo anterior:
F = Σ3(2, 4, 5, 6) = [Σ3(2, 4, 5, 6)]' ' = [Σ3(0, 1, 3, 7)]' = Π3(0, 4, 6, 7)
Gráfica [editar]
La representación gráfica es la que se utiliza en circuitos y esquemas electrónicos. En la siguiente figura se representan gráficamente dos funciones algebraicas, una con símbolos no normalizados, superior, y la otra con normalizados, inferior (véanse los símbolos de las puertas lógicas)
Modos de representación
Existen distintas formas de representar una función lógica, entre las que podemos destacar las siguientes:
* Algebraica
* Por tabla de verdad
* Numérica
* Gráfica
El uso de una u otra, como veremos, dependerá de las necesidades concretas en cada caso.
Algebraica [editar]
Se utiliza cuando se realizan operaciones algebraicas. A continuación se ofrece un ejemplo con distintas formas en las que se puede expresar algebraicamente una misma función de tres variables.
a) F = [(A + BC’)’ + ABC]’ + AB’C
b) F = A’BC’ + AB’C’ + AB’C + ABC’
c) F = (A + B + C)(A + B + C’)(A + B’ + C’)(A’ + B’ + C’)
d) F = BC’ + AB’
e) F = (A + B)(B’ + C’)
f) F = [(BC’)’ · (AB’)’]’
g) F = [(A + B)’ + (B’ + C’)’]’
La expresión a) puede proceder de un problema lógico planteado o del paso de unas especificaciones a lenguaje algebraico. Las formas b) y c) reciben el nombre expresiones canónicas de suma de productos (sum-of-products, SOP, en inglés), la b), y de productos de sumas (product-of-sums, POS, en inglés), la c); su característica principal es la aparición de cada una de las variables (A, B y C) en cada uno de los sumandos o productos. Las d) y e) son funciones simplificadas, esto es, reducidas a su mínima expresión. Las dos últimas expresiones tienen la particularidad de que exclusivamente utiliza funciones NO-Y, la f), o funciones NO-O, la g).
Por tabla de verdad [editar]
Una tabla de verdad contiene todos los valores posibles de una función lógica dependiendo del valor de sus variables. El número de combinaciones posibles para una función de n variables vendrá dado por 2n. Una función lógica puede representarse algebraicamente de distintas formas como acabamos de ver, pero sólo tiene una tabla de verdad. La siguiente tabla corresponde a la función lógica del punto anterior.
La forma más cómodo para ver la equivalencia entre una tabla de verdad y una expresión algebraica es cuando esta última se da en su forma canónica. Así, la función canónica de suma de productos
F = A’BC’ + AB’C’ + AB’C + ABC’
nos indica que será 1 cuando lo sea uno de sus sumandos, lo que significa que tendrá por lo tanto cuatro combinaciones que lo serán (010 para A’BC’, 100 para AB’C’, 101 para AB’C y 110 para ABC’) siendo el resto de combiaciones 0. Con la función canónica de producto de sumas se puede razonar de forma análoga, pero en este caso observando que la función será 0 cuando lo sea uno de sus productos.
También es fácil obtener la tabla de verdad a partir de la función simplificada, pero no así a la inversa.
Numérica [editar]
La representación numérica es una forma simplificada de representar las expresiones canónicas. Si consideramos el criterio de sustituir una variable sin negar por un 1 y una negada por un 0, podremos representar el término, ya sea una suma o un producto, por un número decimal equivalente al valor binario de la combinación. Por ejemplo, los siguientes términos canónicos se representarán del siguiente modo (observe que se toma el orden de A a D como de mayor a menor peso):
AB’CD = 10112 = 1110
A’ + B + C’ + D’ = 01002 = 410
Para representar una función canónica en suma de productos utilizaremos el símbolo Σn (sigma) y en producto de sumas Πn (pi), donde n indicará el número de variables. Así, la representación numérica correspondiente a la tabla de verdad del punto anterior quedará como:
F = Σ3(2, 4, 5, 6) = Π3(0, 1, 3, 7)
Matemáticamente se demuestra, que para todo término i de una función, se cumple la siguiente ecuación:
F = [Σn(i)]' = Πn(2n-1-i )
A modo de ejemplo se puede utilizar esta igualdad para obtener el producto de sumas a partir de la suma de productos del ejemplo anterior:
F = Σ3(2, 4, 5, 6) = [Σ3(2, 4, 5, 6)]' ' = [Σ3(0, 1, 3, 7)]' = Π3(0, 4, 6, 7)
Gráfica [editar]
La representación gráfica es la que se utiliza en circuitos y esquemas electrónicos. En la siguiente figura se representan gráficamente dos funciones algebraicas, una con símbolos no normalizados, superior, y la otra con normalizados, inferior (véanse los símbolos de las puertas lógicas)
2.2.-Compuertas lógicas
Una puerta lógica, o compuerta lógica, es un dispositivo electrónico que es la expresión física de un operador booleano en la lógica de conmutación. Cada puerta lógica consiste en una red de dispositivos interruptores que cumple las condiciones booleanas para el operador particular. Son esencialmente circuitos de conmutación integrados en un chip.
Claude Elwood Shannon experimentaba con relés o interruptores electromagnéticos para conseguir las condiciones de cada compuerta lógica, por ejemplo, para la función booleana Y (AND) colocaba interruptores en circuito serie, ya que con uno solo de éstos que tuviera la condición «abierto», la salida de la compuerta Y sería = 0, mientras que para la implementación de una compuerta O (OR), la conexión de los interruptores tiene una configuración en circuito paralelo.
La tecnología microelectrónica actual permite la elevada integración de transistores actuando como conmutadores en redes lógicas dentro de un pequeño circuito integrado. El chip de la CPU es una de las máximas expresiones de este avance tecnológico.
En nanotecnología se está desarrollando el uso de una compuerta lógica molecular, que haga posible la miniaturización de circuitos.
2.1.-Leyes de Morgan
2.-Propiedades fundamentales del álgebra de Bool
El resultado de aplicar cualquiera de las tres operaciones definidas a variables del sistema booleano resulta en otra variable del sistema, y este resultado es único.
1. Ley de idempotencia:
a * a = a
a + a = a
2. Ley de involución:
a = a
3. Ley conmutativa:
a * b = b * a
a + b = b + a
4. Ley asociativa:
a * (b * c) = (a * b ) * c
a + (b + c) = (a + b ) + c
5. Ley distributiva:
a * (b + c) = (a * b) + (a * c)
(a + b ) * c = (a * c) + (b * c)
a + (b * c) = (a + b) * (a + c)
(a * b ) + c = (a + c) * (b + c)
a + a * b = a + b
6. Ley de cancelación:
(a * b) + a = a
(a + b) * a = a
7. Leyes de De Morgan:
\overline {(a + b)}= \bar {a} \cdot \bar {b} \,
\overline {(a \cdot b)} = \bar {a}+ \bar {b} \,
1. Ley de idempotencia:
a * a = a
a + a = a
2. Ley de involución:
a = a
3. Ley conmutativa:
a * b = b * a
a + b = b + a
4. Ley asociativa:
a * (b * c) = (a * b ) * c
a + (b + c) = (a + b ) + c
5. Ley distributiva:
a * (b + c) = (a * b) + (a * c)
(a + b ) * c = (a * c) + (b * c)
a + (b * c) = (a + b) * (a + c)
(a * b ) + c = (a + c) * (b + c)
a + a * b = a + b
6. Ley de cancelación:
(a * b) + a = a
(a + b) * a = a
7. Leyes de De Morgan:
\overline {(a + b)}= \bar {a} \cdot \bar {b} \,
\overline {(a \cdot b)} = \bar {a}+ \bar {b} \,
1.1.-Lógica binaria
La lógica binaria trabaja con variables binarias y operaciones lógicas. Así, las variables sólo tomarán dos valores discretos: V (verdadero) y F (falso); aunque también se pueden denotar como sí y no, ó 1 y 0 respectivamente.
IV.-ALGEBRA DE BOOLE
Álgebra de Boole (también llamada Retículas booleanas) en informática y matemática, es una estructura algebraica que rigorizan las operaciones lógicas Y, O y NO, así como el conjunto de operaciones unión, intersección y complemento.
Se denomina así en honor a George Boole, (2 de noviembre de 1815 a 8 de diciembre de 1864), matemático inglés que fue el primero en definirla como parte de un sistema lógico a mediados del siglo XIX. Específicamente, el álgebra de Boole fue un intento de utilizar las técnicas algebraicas para tratar expresiones de la lógica proposicional. En la actualidad, el álgebra de Boole se aplica de forma generalizada en el ámbito del diseño electrónico. Claude Shannon fue el primero en aplicarla en el diseño de circuitos de conmutación eléctrica biestables, en 1938.
Se denomina así en honor a George Boole, (2 de noviembre de 1815 a 8 de diciembre de 1864), matemático inglés que fue el primero en definirla como parte de un sistema lógico a mediados del siglo XIX. Específicamente, el álgebra de Boole fue un intento de utilizar las técnicas algebraicas para tratar expresiones de la lógica proposicional. En la actualidad, el álgebra de Boole se aplica de forma generalizada en el ámbito del diseño electrónico. Claude Shannon fue el primero en aplicarla en el diseño de circuitos de conmutación eléctrica biestables, en 1938.
1.4.-Gray
El código binario reflejado o código Gray, nombrado así en honor del investigador Frank Gray, es un sistema de numeración binario en el que dos valores sucesivos difieren solamente en uno de sus dígitos.
El código Gray fue diseñado originalmente para prevenir señales espurias de los switches electromecánicos. Actualmente es usado para facilitar la corrección de errores en los sistemas de comunicaciones, tales como algunos sistemas de televisión por cable y la televisión digital terrestre.
1.3.-Exceso-3
El código BCD Exceso 3 se obtiene sumando 3 a cada combinación del código BCD natural. Ver la tabla inferior a la derecha.
Tabla de equivalencias entre el número decimal, el código BCD natural y BCD Exceso 3 correspondiente - Electrónica UnicromEl código BCD exceso 3 es un código en donde la ponderación no existe (no hay "pesos" como en el código BCD natural y código Aiken).
Al igual que el código BCD Aiken cumple con la misma característica de simetría. Cada cifra es el complemento a 9 de la cifra simétrica en todos sus dígitos.
Ver la simetría en el código exceso 3 correspondiente a los decimales: 4 y 5, 3 y 6, 2 y 7, 1 y 8, 0 y 9
Es un código muy útil en las operaciones de resta y división.
1.2.-BCD
Binary-coded decimal (BCD8421) es un sistema numérico usado en sistemas computacionales y electrónicos para codificar números enteros positivos y facilitar las operaciones aritméticas. Es un código pesado debido a que representa los dígitos con un orden específico (8421).
Fundamentos
En BCD cada cifra que representa un dígito decimal (0, 1,...8 y 9) se representa con su equivalente binario en cuatro bits (nibble o cuarteto) (esto es así porque es el número de bits necesario para representar el nueve, el número más alto que se puede representar en BCD). En la siguiente tabla se muestran los códigos BCD más empleados:
Como se observa con el BCD sólo se utilizan 10 de las 16 posibles combinaciones que se pueden formar con números de 4 bits, por lo que el sistema pierde capacidad de representación, aunque se facilita la compresión de los números. Esto es porque el BCD sólo se usa para representar cifras no números en su totalidad. Esto quiere decir que para números de más de una cifra hacen falta dos números BCD para componerlo. A primera vista esto puede parecer más engorroso pero en realidad de cara al cálculo y la programación de sistemas digitales es sumamente práctico ya que permite trabajar de hecho con números decimales ordinarios haciendo uso solo de los dos bits posibles que otorga un circuito digital típico ON (1) / OFF (0). Algo que como se verá resulta muy útil.
Desde que los sistemas informáticos empezaron a almacenar los datos en conjuntos de ocho bits (octeto), hay dos maneras comunes de almacenar los datos BCD:
* Omisión de los cuatro bits más significativos(como sucede en el EBCDIC)
* Almacenamiento de dos datos BCD, es el denominado BCD "empaquetado", en el que también se incluye en primer lugar el signo, por lo general con 1100 para el + y 1101 para el -.
De este modo, el número 127 sería representado como (11110001, 11110010, 11110111) en el EBCDIC o (00010010, 01111100) en el BCD empaquetado.
El BCD sigue siendo ampliamente utilizado para almacenar datos, en aritmética binaria o en electrónica. Los números se pueden mostrar fácilmente en visualizadores de siete segmentos enviando cada cuarteto BCD a un visualizador. La BIOS de un ordenador personal almacena generalmente la fecha y la hora en formato del BCD, probablemente por razones históricas se evitó la necesidad de su conversión en ASCII.
La ventaja del código BCD frente a la representación binaria clásica es que no hay límite para el tamaño de un número. Los números que se representan en formato binario están generalmente limitados por el número mayor que se pueda representar con 8, 16, 32 o 64 bits. Por el contrario utilizando BCD añadir un nuevo dígito sólo implica añadir una nueva secuencia de 4 bits.
El BCD en electrónica
El BCD es muy común en sistemas electrónicos donde se debe mostrar un valor numérico, especialmente en los sistemas digitales no programados (sin microprocesador o microcontrolador).
Utilizando el código BCD, se simplifica la manipulación de los datos numéricos que deben ser mostrados por ejemplo en un visualizador de siete segmentos. Esto lleva a su vez una simplificación en el diseño físico del circuito (hardware). Si la cantidad numérica fuera almacenada y manipulada en binario natural, el circuito sería mucho más complejo que si se utiliza el BCD.
Fundamentos
En BCD cada cifra que representa un dígito decimal (0, 1,...8 y 9) se representa con su equivalente binario en cuatro bits (nibble o cuarteto) (esto es así porque es el número de bits necesario para representar el nueve, el número más alto que se puede representar en BCD). En la siguiente tabla se muestran los códigos BCD más empleados:
Como se observa con el BCD sólo se utilizan 10 de las 16 posibles combinaciones que se pueden formar con números de 4 bits, por lo que el sistema pierde capacidad de representación, aunque se facilita la compresión de los números. Esto es porque el BCD sólo se usa para representar cifras no números en su totalidad. Esto quiere decir que para números de más de una cifra hacen falta dos números BCD para componerlo. A primera vista esto puede parecer más engorroso pero en realidad de cara al cálculo y la programación de sistemas digitales es sumamente práctico ya que permite trabajar de hecho con números decimales ordinarios haciendo uso solo de los dos bits posibles que otorga un circuito digital típico ON (1) / OFF (0). Algo que como se verá resulta muy útil.
Desde que los sistemas informáticos empezaron a almacenar los datos en conjuntos de ocho bits (octeto), hay dos maneras comunes de almacenar los datos BCD:
* Omisión de los cuatro bits más significativos(como sucede en el EBCDIC)
* Almacenamiento de dos datos BCD, es el denominado BCD "empaquetado", en el que también se incluye en primer lugar el signo, por lo general con 1100 para el + y 1101 para el -.
De este modo, el número 127 sería representado como (11110001, 11110010, 11110111) en el EBCDIC o (00010010, 01111100) en el BCD empaquetado.
El BCD sigue siendo ampliamente utilizado para almacenar datos, en aritmética binaria o en electrónica. Los números se pueden mostrar fácilmente en visualizadores de siete segmentos enviando cada cuarteto BCD a un visualizador. La BIOS de un ordenador personal almacena generalmente la fecha y la hora en formato del BCD, probablemente por razones históricas se evitó la necesidad de su conversión en ASCII.
La ventaja del código BCD frente a la representación binaria clásica es que no hay límite para el tamaño de un número. Los números que se representan en formato binario están generalmente limitados por el número mayor que se pueda representar con 8, 16, 32 o 64 bits. Por el contrario utilizando BCD añadir un nuevo dígito sólo implica añadir una nueva secuencia de 4 bits.
El BCD en electrónica
El BCD es muy común en sistemas electrónicos donde se debe mostrar un valor numérico, especialmente en los sistemas digitales no programados (sin microprocesador o microcontrolador).
Utilizando el código BCD, se simplifica la manipulación de los datos numéricos que deben ser mostrados por ejemplo en un visualizador de siete segmentos. Esto lleva a su vez una simplificación en el diseño físico del circuito (hardware). Si la cantidad numérica fuera almacenada y manipulada en binario natural, el circuito sería mucho más complejo que si se utiliza el BCD.
1.1.-binario
De esta manera, los números decimales 17, 234 y 4598 se representarían en BCD natural del siguiente modo:
* 17: 0001 0111 (cifras 1 y 7)
* 234: 0010 0011 0100 (cifras 2, 3 y 4)
* 4598: 0100 0101 1001 1000 (cifras 4, 5, 9 y 8)
Cualquier otro código BCD se puede emplear de forma similar para codificar números decimales, lo único que cambia es la combinación correspondiente a cada número decimal, ya que cada código BCD posee distintas combinaciones binarias.
Características del código binario
Ponderación
La mayoría de los sistemas de numeración actuales son ponderados, es decir, cada posición de una secuencia de dígitos tiene asociado un peso. El sistema binario es, de hecho, un sistema de numeración posicional ponderado. Sin embargo, algunos códigos binarios, como el código Gray, no son ponderados, es decir, no tienen un peso asociado a cada posición. Otros, como el mismo código binario natural o el BCD natural sí lo son.
Distancia
La distancia es una característica sólo aplicable a las combinaciones binarias. La distancia entre dos combinaciones es el número de bits que cambian de una a otra. Por ejemplo, si se tienen las combinaciones de cuatro bits 0010 y 0111, correspondientes al 2 y al 7 en binario natural, se dirá que la distancia entre ellas es igual a dos (ya que de una a otra cambian dos bits).
Además, con el concepto de distancia se puede definir la distancia mínima de un código. Ésta no es más que la distancia menor que haya entre dos de las combinaciones de ese código.
Adyacencia
La adyacencia es una característica que consiste en que de una combinación binaria a la siguiente sólo varía un bit (distancia igual a uno). Esta propiedad es aplicable únicamente a las combinaciones binarias de un código, no al código en sí mismo.
Continuidad
La continuidad es una característica de los códigos binarios que cumplen que todas las posibles combinaciones del código son adyacentes, es decir, que de cualquier combinación del código a la siguiente cambia un sólo bit. En este caso se dice que el código es continuo. Cuando la última combinación del código es, a su vez, adyacente a la primera, se trata de un código cíclico.
Autocomplementariedad
Se dice que un código binario es autocomplementario cuando el complemento a nueve del equivalente decimal de cualquier combinación del código puede hallarse invirtiendo los valores de cada uno de los bits (operación lógica unaria de negación) y el resultado sigue siendo una combinación válida en ese código. Esta característica se observa en algunos códigos BCD, como el código Aiken o el código BCD exceso 3. Los códigos autocomplementarios facilitan las operaciones aritméticas.
1.-Códigos numéricos
Los códigos numéricos sirven para representar números con fines de procesamiento y almacenamiento. Los números de punto fijo y de punto flotante son ejemplos de estos códigos.
2.3.-Representación de números con signo
En matemáticas, los números negativos en cualquier base se representan del modo habitual, precediéndolos con un signo "−". Sin embargo, en una computadora, hay varias formas de representar el signo de un número. Este artículo trata cuatro métodos de extender el sistema binario para representar números con signo: signo y magnitud, complemento a uno, complemento a dos y exceso N.
Para la mayoría de usos, las computadoras modernas utilizan típicamente la representación en complemento a dos, aunque pueden usarse otras en algunas circunstancias.
Signo y Magnitud
Un primer enfoque al problema de representar el signo de un número podría consistir en asignar un bit para representar el signo, poner ese bit (a menudo el bit más significativo) a 0 para un número positivo, y a 1 para un número negativo. Los bits restantes en el número indican la magnitud (o el valor absoluto). Por lo tanto en un byte con solamente 7 bits (aparte del bit de signo) la magnitud puede tomar valores desde 01111111(+127)a 0000000 (0), y de aquí a 11111111 (-127). Así se puede representar números desde -12710 hasta +12710. Una consecuencia de esta representación es que hay dos maneras de representar 0, 00000000 (0) y 10000000 (-0). De este modo -43 decimal codificado en un byte de ocho bits es 10101011. Este enfoque es directamente comparable a la forma habitual de demostrar el signo (colocando "+" o "-" al lado de la magnitud del número). Algunas de las primeras computadoras binarias (por ejemplo la IBM 7090) utilizaron esta representación, quizás por su relación obvia con la práctica habitual (Muchas computadoras decimales también usaron el sistema "signo y magnitud).
Para la mayoría de usos, las computadoras modernas utilizan típicamente la representación en complemento a dos, aunque pueden usarse otras en algunas circunstancias.
Signo y Magnitud
Un primer enfoque al problema de representar el signo de un número podría consistir en asignar un bit para representar el signo, poner ese bit (a menudo el bit más significativo) a 0 para un número positivo, y a 1 para un número negativo. Los bits restantes en el número indican la magnitud (o el valor absoluto). Por lo tanto en un byte con solamente 7 bits (aparte del bit de signo) la magnitud puede tomar valores desde 01111111(+127)a 0000000 (0), y de aquí a 11111111 (-127). Así se puede representar números desde -12710 hasta +12710. Una consecuencia de esta representación es que hay dos maneras de representar 0, 00000000 (0) y 10000000 (-0). De este modo -43 decimal codificado en un byte de ocho bits es 10101011. Este enfoque es directamente comparable a la forma habitual de demostrar el signo (colocando "+" o "-" al lado de la magnitud del número). Algunas de las primeras computadoras binarias (por ejemplo la IBM 7090) utilizaron esta representación, quizás por su relación obvia con la práctica habitual (Muchas computadoras decimales también usaron el sistema "signo y magnitud).
2.2.-Complemento a la base y a la base disminuida
Muchas computadoras digitales utilizan un sistema numérico de complemento a base a fin de minimizar la cantidad de circuitos necesarios para realizarla aritmética de enteros.
Por ejemplo, se puede realizar la operación A - B calculando A + (- B) donde (- B) está representado por el complemento a 2 de B. Por tanto, la computadora sólo necesita un sumador binario y algunos circuitos complementarios para la suma y la resta.
Las máquinas que utilizan el sistema numérico de complemento a 2 pueden representar enteros en el intervalo �2n-1 � N � 2n-1-1, donde n es el número de bits disponibles para representar a N.
Observe que 2n-1-1=(0,11...1)2ms y que �2n-1=(1,00...0)2ms, donde el bit extremo representa el signo y los n-1 bits restantes representan la magnitud.
Se considerarán tres casos para ilustrar la aritmética en el sistema numérico de complemento a dos: A=B+C, A=B-C y A=-B-C. Se describirá cada caso en general y para todos los casos se supondrá que B� 0 y C� 0. Los resultados se pueden generalizar fácilmente, si B y C son negativos.
Caso 1:
Calcular A=B+C. Como B y C son positivos, A también lo será, y esto se convierte simplemente en
(A)2 = (B) 2 + (C) 2
Como los tres números son positivos, no hay que utilizar complemento a dos. Cuando A> 2n-1-1, es decir, cuando hay desbordamiento existe una dificultad. Es fácil detectar tal condición, ya que el bit del signo de A será incorrecto.
Ejemplo.
Calcule (9)10 + (5)10 con aritmética de complemento a dos de 5 bits.
+(9) 10 = +(1001) 2 = (0,1001) 2ms
+(5) 10 = +(0101) 2 = (0,0101) 2ms
Al sumar estos códigos de 5 bits se obtiene
0 1 0 0 1
0 0 1 0 1
_______________
+ 0 1 1 1 0
Como el resultado también tiene un bit de signo 0, representa correctamente la suma derecha, que se interpreta como,
(0,1110)2ms = +(1110)2 = (14)10
Ejemplo 25.
Calcular (12)10 + (7)10
(12)10 = +(1100)2 = (0,1100)2ms
(7)10 = +(0111)2 = (0,0111)2ms
Sumando los dos códigos de 5 bits resulta
0 1 1 0 0
0 0 1 1 1
_______________
+ 1 0 0 1 1
El resultado es (1,0011)2ms, que se interpreta, como (1,0011)2ms= -(1101) = -(13)10
El resultado es un número negativo. Sin embargo, esto no puede ser correcto, por lo que debe haber una explicación. La respuesta es que la suma de los dos números dados requiere mas espacio que los cinco bits originados para representarla.
La suma correcta es +(19)10, que está fuera del intervalo de números de complemento a dos de cinco bits, pues la escala total positiva es (0,1111)2ms=+(15)10. El bit de signo incorrecto obtenido en los cálculos indica un resultado incorrecto. Por tanto, hay una condición de desbordamiento.
Caso 2:
Calcular A = B - C. Se considera este cálculo como A = B +(- C) de la siguiente manera:
A = (B)2 + (- (C)2)
A = (B)2 + [C]2
A = (B)2 + 2n � (C)2
A = 2n + (B - C)2
2n es un término adicional. Si B � C, entonces B-C� 0, lo que hace A� 2n. El término 2n representa un bit de acarreo y se puede ignorar, conservando (B - C)2. Por tanto (A)2 = (B)2 + [C]2 y se descarta el acarreo. Si B < C, entonces B - C < 0, lo que da A = 2n - (C � B)2= [C - B]2, o A= - (C - B)2 que es la respuesta deseada. En este caso no hay acarreo.
Si B y C son ambos positivos, la magnitud de B - C siempre será menor que cualquiera de los dos números. Esto significa que no se presenta desbordamiento al calcular B - C.
Ejemplo.
Calcular (12)10 � (5)10
Se realiza este cálculo como (12)10 + (-(5)10)
(12)10 = (1100)2 = (0,1100)2ms
-(5)10 = -(0101)2 = (1,1011)2ms
Se suman los dos números de 5 bits
0 1 1 0 0
+ 1 1 0 1 1
____________________________
1 0 0 1 1 1
Al descartar el acarreo, el bit de signo es cero y por tanto, se interpreta el resultado como (0,0111)2ms = +(0111)2 = +(7)10
Ejemplo.
Calcule (5)10 � (12)10
Se realiza el cálculo como (5)10 + (-(12)10).
(5)10 = +(0101)2 = (0,0101)2ms
-(12)10 = -(1100)2 = (1,0100)2ms
Se suman los dos códigos de 5 bits para obtener,
0 0 1 0 1
+ 1 0 1 0 0
______________
0 1 1 0 0 1
En este caso no hay acarreo y el bit de signo es 1, lo que indica que el resultado es negativo.
(1,1001)2ms = -[1,1001]2
= -(00111)2ms
= -(0111)2
= -(7)10
Caso 3:
Calcule A = - B - C. El resultado es A = - (B + C) = [B + C]2.
Representamos - B y - C mediante el complemento a dos de sus magnitudes, y calculamos A = (- B) + (- C). Por tanto,
A = [B]2 + [C]2.
= 2n - (B)2 + 2n - (C)2
= 2n + 2n - (B + C)2
= 2n + [B + C]2
Si se descarta el bit de acarreo (2n), el cálculo produce el resultado correcto.
Ejemplo.
Calcule - (9)10 - (5)10
Se realiza el cálculo como (- (9)10) + (- (5)10).
(- 9)10 = - (1001)2 = (0,1001)2ms = [01001]2ms = (1,0111)2ms
(- 5)10 = - (0101)2 = (0,0101)2ms = [0,0101]2ms = (1,1011)2ms
Al sumar los dos códigos de cinco bits se obtiene:
1 0 1 1 1
+ 1 1 0 1 1
_____________
1 1 0 0 1 0
acarreo
Al descartar el acarreo se tiene un bit de signo 1. Por tanto el resultado es correcto y se interpreta como:
(1,0010)2ms = -[1,0010]2
= -(01110)2ms
= -(1110)2
= -(14)10
En este caso puede haber desbordamiento, lo que se indica mediante un resultado que tiene un bit de signo incorrecto como en el ejemplo siguiente.
Ejemplo.
Calcule - (12)10 - (5)10
Se realiza el cálculo como (- (12)10) + (- (5)10).
(- 12)10 = - (1100)2 = (0,1100)2ms = (1,0100)2ms
(- 5)10 = - (0101)2 = (0,0101)2ms = (1,1011)2ms
Al sumar los dos códigos de cinco bits se obtiene:
1 0 1 0 0
+ 1 1 0 1 1
______________
1 0 1 1 1 1
acarreo
Al descartar el acarreo, se interpreta el resultado como:
(0,1111)2ms = (1111)2
= (15)10
El resultado es incorrecto.
Como el bit de signo es incorrecto, entonces, hay un desbordamiento.
Ejemplo.
Si A y B son variables enteras de un programa para computadora, con A = + (25)10 y B = - (46)10.
Si la computadora utiliza aritmética de complemento a dos con 8 bits, mostrar la forma como calcularía A + B, A - B, B - A, y - A - B.
Las variables A y B se guardarían en la memoria de la computadora con el formato de sistema numérico de 8 bits de complemento a dos.
A = + (25)10 = (0,0011001)2ms
B = - (46)10 = - (0,0101110)2ms = (1,1010010)2ms
Calculemos los complementos a dos de A y B para representar - A y - B respectivamente.
- A = - (25)10 = - (0,0011001)2ms = (1,1100111)2ms
- B = - (- (46)10) = - (1,1010010)2ms = (0,0101110)2ms
Al realizar los cálculos se obtiene:
A + B:
0 0 0 1 1 0 0 1
+ 1 1 0 1 0 0 1 0
____________________
0 1 1 1 0 1 0 1 1
A + B = (1,1101011)2ms = - (0,0010101)2ms = - (21)10
A - B = A + ( - B):
0 0 0 1 1 0 0 1
+ 0 0 1 0 1 1 1 0
_____________________
0 0 1 0 0 0 1 1 1
A - B = (0,1000111)2ms = + (71)10
B - A = B + (- A):
1 1 0 1 0 0 1 0
+ 1 1 1 0 0 1 1 1
_____________________
1 1 0 1 1 1 0 0 1
El resultado es B - A = (1,0111001) = - (0,1000111)2ms = - (71)10
- A - B = (- A) + (- B):
1 1 1 0 0 1 1 1
+ 0 0 1 0 1 1 1 0
_____________________
1 0 0 0 1 0 1 0 1
- A - B = (0,0010101)2ms = (21)10
Ejemplo.
Sumar (75)10 y - (21)10 usando complemento de 10 de los dos números.
(75)10 = (0,75)10ms
- (21)10 = (9,79)10ms
0 7 5
+ 9 7 9
_________
1 0 5 4
Descartando el dígito de acarreo, el resultado es (0,54)10ms = (54)10 que es el resultado correcto.
El complemento disminuido a una base [N]r � 1 de un número (N)r se define como: [N]r � 1 = r n - (N) r - 1, donde n es el número de dígitos de (N)r.
El complemento a uno es un caso particular del complemento disminuido a una base para números binarios y está dado por:
[N] 2 � 1 = 2n - (N)2-1, donde n es el número de bits de (N)2.
Algoritmo para determinar [N]r � 1 dado (N) r.
Reemplazamos cada dígito ai de (N)r por r - 1 - ai. Observe que si r = 2, basta con complementar cada bit individual de (N)r.
Ejemplo.
Sumar: (1001)2 y - (0100)2.
(1001)2: 0 1 0 0 1
- (0100)2: + 1 1 0 1 1
________________________
1 0 0 1 0 0
Se obtiene el resultado correcto si el acarreo de salida del bit más significativo se suma a la posición del bit menos significativo. Es decir 00100 + 1 = 00101.
Este procedimiento se conoce como acarreo final circular y es un paso de corrección necesario en la aritmética de complemento disminuido.
Por tanto, + (1001)2 - (0100)2 = (0,0101)2ms = (101)2.
Ejemplo.
Sumar +(1001)2 y - (1111)2
+(1001)2: 0 1 0 0 1
-(1111)2: + 1 0 0 0 0
______________
1 1 0 0 1
El acarreo final circular es 0 y por tanto,
+ (1001)2 - (1111)2 = (1,1001)2ms = - (0,0110)2ms = -(0110)2.
Ejemplo.
Sumar (75)10 y - (21)10
El complemento a nueve de 021 es 978. Por tanto, 075 + 978 = 1053, que es el resultado correcto después del procedimiento de acarreo final circular 053 + 1 = 054.
Ejemplo.
Sumar (21)10 y - (75)10.
El cálculo de 021 + 924 = 945, que es el resultado correcto, pues el acarreo final es cero. Así, (9,45)10ms = - (0,54) 10ms = -(54)10.
Por ejemplo, se puede realizar la operación A - B calculando A + (- B) donde (- B) está representado por el complemento a 2 de B. Por tanto, la computadora sólo necesita un sumador binario y algunos circuitos complementarios para la suma y la resta.
Las máquinas que utilizan el sistema numérico de complemento a 2 pueden representar enteros en el intervalo �2n-1 � N � 2n-1-1, donde n es el número de bits disponibles para representar a N.
Observe que 2n-1-1=(0,11...1)2ms y que �2n-1=(1,00...0)2ms, donde el bit extremo representa el signo y los n-1 bits restantes representan la magnitud.
Se considerarán tres casos para ilustrar la aritmética en el sistema numérico de complemento a dos: A=B+C, A=B-C y A=-B-C. Se describirá cada caso en general y para todos los casos se supondrá que B� 0 y C� 0. Los resultados se pueden generalizar fácilmente, si B y C son negativos.
Caso 1:
Calcular A=B+C. Como B y C son positivos, A también lo será, y esto se convierte simplemente en
(A)2 = (B) 2 + (C) 2
Como los tres números son positivos, no hay que utilizar complemento a dos. Cuando A> 2n-1-1, es decir, cuando hay desbordamiento existe una dificultad. Es fácil detectar tal condición, ya que el bit del signo de A será incorrecto.
Ejemplo.
Calcule (9)10 + (5)10 con aritmética de complemento a dos de 5 bits.
+(9) 10 = +(1001) 2 = (0,1001) 2ms
+(5) 10 = +(0101) 2 = (0,0101) 2ms
Al sumar estos códigos de 5 bits se obtiene
0 1 0 0 1
0 0 1 0 1
_______________
+ 0 1 1 1 0
Como el resultado también tiene un bit de signo 0, representa correctamente la suma derecha, que se interpreta como,
(0,1110)2ms = +(1110)2 = (14)10
Ejemplo 25.
Calcular (12)10 + (7)10
(12)10 = +(1100)2 = (0,1100)2ms
(7)10 = +(0111)2 = (0,0111)2ms
Sumando los dos códigos de 5 bits resulta
0 1 1 0 0
0 0 1 1 1
_______________
+ 1 0 0 1 1
El resultado es (1,0011)2ms, que se interpreta, como (1,0011)2ms= -(1101) = -(13)10
El resultado es un número negativo. Sin embargo, esto no puede ser correcto, por lo que debe haber una explicación. La respuesta es que la suma de los dos números dados requiere mas espacio que los cinco bits originados para representarla.
La suma correcta es +(19)10, que está fuera del intervalo de números de complemento a dos de cinco bits, pues la escala total positiva es (0,1111)2ms=+(15)10. El bit de signo incorrecto obtenido en los cálculos indica un resultado incorrecto. Por tanto, hay una condición de desbordamiento.
Caso 2:
Calcular A = B - C. Se considera este cálculo como A = B +(- C) de la siguiente manera:
A = (B)2 + (- (C)2)
A = (B)2 + [C]2
A = (B)2 + 2n � (C)2
A = 2n + (B - C)2
2n es un término adicional. Si B � C, entonces B-C� 0, lo que hace A� 2n. El término 2n representa un bit de acarreo y se puede ignorar, conservando (B - C)2. Por tanto (A)2 = (B)2 + [C]2 y se descarta el acarreo. Si B < C, entonces B - C < 0, lo que da A = 2n - (C � B)2= [C - B]2, o A= - (C - B)2 que es la respuesta deseada. En este caso no hay acarreo.
Si B y C son ambos positivos, la magnitud de B - C siempre será menor que cualquiera de los dos números. Esto significa que no se presenta desbordamiento al calcular B - C.
Ejemplo.
Calcular (12)10 � (5)10
Se realiza este cálculo como (12)10 + (-(5)10)
(12)10 = (1100)2 = (0,1100)2ms
-(5)10 = -(0101)2 = (1,1011)2ms
Se suman los dos números de 5 bits
0 1 1 0 0
+ 1 1 0 1 1
____________________________
1 0 0 1 1 1
Al descartar el acarreo, el bit de signo es cero y por tanto, se interpreta el resultado como (0,0111)2ms = +(0111)2 = +(7)10
Ejemplo.
Calcule (5)10 � (12)10
Se realiza el cálculo como (5)10 + (-(12)10).
(5)10 = +(0101)2 = (0,0101)2ms
-(12)10 = -(1100)2 = (1,0100)2ms
Se suman los dos códigos de 5 bits para obtener,
0 0 1 0 1
+ 1 0 1 0 0
______________
0 1 1 0 0 1
En este caso no hay acarreo y el bit de signo es 1, lo que indica que el resultado es negativo.
(1,1001)2ms = -[1,1001]2
= -(00111)2ms
= -(0111)2
= -(7)10
Caso 3:
Calcule A = - B - C. El resultado es A = - (B + C) = [B + C]2.
Representamos - B y - C mediante el complemento a dos de sus magnitudes, y calculamos A = (- B) + (- C). Por tanto,
A = [B]2 + [C]2.
= 2n - (B)2 + 2n - (C)2
= 2n + 2n - (B + C)2
= 2n + [B + C]2
Si se descarta el bit de acarreo (2n), el cálculo produce el resultado correcto.
Ejemplo.
Calcule - (9)10 - (5)10
Se realiza el cálculo como (- (9)10) + (- (5)10).
(- 9)10 = - (1001)2 = (0,1001)2ms = [01001]2ms = (1,0111)2ms
(- 5)10 = - (0101)2 = (0,0101)2ms = [0,0101]2ms = (1,1011)2ms
Al sumar los dos códigos de cinco bits se obtiene:
1 0 1 1 1
+ 1 1 0 1 1
_____________
1 1 0 0 1 0
acarreo
Al descartar el acarreo se tiene un bit de signo 1. Por tanto el resultado es correcto y se interpreta como:
(1,0010)2ms = -[1,0010]2
= -(01110)2ms
= -(1110)2
= -(14)10
En este caso puede haber desbordamiento, lo que se indica mediante un resultado que tiene un bit de signo incorrecto como en el ejemplo siguiente.
Ejemplo.
Calcule - (12)10 - (5)10
Se realiza el cálculo como (- (12)10) + (- (5)10).
(- 12)10 = - (1100)2 = (0,1100)2ms = (1,0100)2ms
(- 5)10 = - (0101)2 = (0,0101)2ms = (1,1011)2ms
Al sumar los dos códigos de cinco bits se obtiene:
1 0 1 0 0
+ 1 1 0 1 1
______________
1 0 1 1 1 1
acarreo
Al descartar el acarreo, se interpreta el resultado como:
(0,1111)2ms = (1111)2
= (15)10
El resultado es incorrecto.
Como el bit de signo es incorrecto, entonces, hay un desbordamiento.
Ejemplo.
Si A y B son variables enteras de un programa para computadora, con A = + (25)10 y B = - (46)10.
Si la computadora utiliza aritmética de complemento a dos con 8 bits, mostrar la forma como calcularía A + B, A - B, B - A, y - A - B.
Las variables A y B se guardarían en la memoria de la computadora con el formato de sistema numérico de 8 bits de complemento a dos.
A = + (25)10 = (0,0011001)2ms
B = - (46)10 = - (0,0101110)2ms = (1,1010010)2ms
Calculemos los complementos a dos de A y B para representar - A y - B respectivamente.
- A = - (25)10 = - (0,0011001)2ms = (1,1100111)2ms
- B = - (- (46)10) = - (1,1010010)2ms = (0,0101110)2ms
Al realizar los cálculos se obtiene:
A + B:
0 0 0 1 1 0 0 1
+ 1 1 0 1 0 0 1 0
____________________
0 1 1 1 0 1 0 1 1
A + B = (1,1101011)2ms = - (0,0010101)2ms = - (21)10
A - B = A + ( - B):
0 0 0 1 1 0 0 1
+ 0 0 1 0 1 1 1 0
_____________________
0 0 1 0 0 0 1 1 1
A - B = (0,1000111)2ms = + (71)10
B - A = B + (- A):
1 1 0 1 0 0 1 0
+ 1 1 1 0 0 1 1 1
_____________________
1 1 0 1 1 1 0 0 1
El resultado es B - A = (1,0111001) = - (0,1000111)2ms = - (71)10
- A - B = (- A) + (- B):
1 1 1 0 0 1 1 1
+ 0 0 1 0 1 1 1 0
_____________________
1 0 0 0 1 0 1 0 1
- A - B = (0,0010101)2ms = (21)10
Ejemplo.
Sumar (75)10 y - (21)10 usando complemento de 10 de los dos números.
(75)10 = (0,75)10ms
- (21)10 = (9,79)10ms
0 7 5
+ 9 7 9
_________
1 0 5 4
Descartando el dígito de acarreo, el resultado es (0,54)10ms = (54)10 que es el resultado correcto.
El complemento disminuido a una base [N]r � 1 de un número (N)r se define como: [N]r � 1 = r n - (N) r - 1, donde n es el número de dígitos de (N)r.
El complemento a uno es un caso particular del complemento disminuido a una base para números binarios y está dado por:
[N] 2 � 1 = 2n - (N)2-1, donde n es el número de bits de (N)2.
Algoritmo para determinar [N]r � 1 dado (N) r.
Reemplazamos cada dígito ai de (N)r por r - 1 - ai. Observe que si r = 2, basta con complementar cada bit individual de (N)r.
Ejemplo.
Sumar: (1001)2 y - (0100)2.
(1001)2: 0 1 0 0 1
- (0100)2: + 1 1 0 1 1
________________________
1 0 0 1 0 0
Se obtiene el resultado correcto si el acarreo de salida del bit más significativo se suma a la posición del bit menos significativo. Es decir 00100 + 1 = 00101.
Este procedimiento se conoce como acarreo final circular y es un paso de corrección necesario en la aritmética de complemento disminuido.
Por tanto, + (1001)2 - (0100)2 = (0,0101)2ms = (101)2.
Ejemplo.
Sumar +(1001)2 y - (1111)2
+(1001)2: 0 1 0 0 1
-(1111)2: + 1 0 0 0 0
______________
1 1 0 0 1
El acarreo final circular es 0 y por tanto,
+ (1001)2 - (1111)2 = (1,1001)2ms = - (0,0110)2ms = -(0110)2.
Ejemplo.
Sumar (75)10 y - (21)10
El complemento a nueve de 021 es 978. Por tanto, 075 + 978 = 1053, que es el resultado correcto después del procedimiento de acarreo final circular 053 + 1 = 054.
Ejemplo.
Sumar (21)10 y - (75)10.
El cálculo de 021 + 924 = 945, que es el resultado correcto, pues el acarreo final es cero. Así, (9,45)10ms = - (0,54) 10ms = -(54)10.
2.1.-Operaciones aritméticas con números en diferentes bases
DE BINARIO A DECIMAL:
Para poder transformar números binarios en su correspondiente decimal basta multiplicar el dígito binario (que sólo puede ser 0 o 1) por 2 elevado a la potencia correpondiente a la distancia de ese símbolo al punto decimal. Luego se suman los valores obtenidos y se consigue el número final.
Ejemplos:
102 = 1x21 + 0x20 = 1x2 + 0x1 = 2 + 0 = 210
1012 = 1x22 + 0x21 + 1x20 = 1x8 + 1x4 + 0x2 + 1x1 = 4 + 0 + 1 = 510
10012 = 1x23 + 0x22 + 0x21 + 1x20 = 1x8 + 0x4 + 0x2 + 1x1 = 8 + 0 + 0 + 1 = 910
Y para número fraccionarios:
0.0112 = 0x2-1 + 1x2-2 + 1x2-3 = 0x0.5 + 1x0.25 + 1x0.125 = 0 + 0.25 + 0.125 = 0.37510
0.1012 = 1x 2-1 + 0x 2-2 + 1 x 2-3 = 1x0.5 + 0x0.25 + 1 x0.125 = 0.5 + 0 + 0.125 = 0.62510
110.0102 = 1x22 + 1x21 + 0x20 + 0 x 2-1 + 1 x 2-2 + 0 x 2-3
1x4 + 1x2 + 0x1 + 0x0.5 + 1x0.25 + 0x.125
4 + 2 + 0 + 0 + 0.25 + 0
6.2510
Como se ve en los ejemplos el punto decimal aparece automáticamente en la posición correcta una vez efectuada la suma de los componentes.
DE DECIMAL A BINARIO:
Aquí veremos el método de divisiones y multiplicaciones sucesivas.
Para convertir un némero ENTERO decimal a una nueva base, el número decimal es sucesivamente dividido por la nueva base. Como en nuestro caso la nueva base es 2 el número será sucesivamente dividido por 2, O sea, el número original es dividido por 2, el resultado de ese cociente es dividido por 2 sucesivamente hasta que el cociente de 0. El resto de cada división es un número binario que conforma el número resultante de la conversión. El primer resultado producido (el primer resto obtenido) corresponde al bit mas próximo al punto decimal (o lo que se conoce como bit de menor peso). Los sucesivos bits se colocan a la izquierda del anterior. Notese que esto es como escribir en sentido contrario al empleado normalmente.
Veamos esto con un ejemplo:
Convertiremos a binario el número 1810
18 / 2 = 9 y resta 0 (este cero es el bit mas próximo al punto binario)
9 / 2 = 4 y resta 1 (este uno es el bit que le sigue a la izquierda al cero obtenido arriba)
4 / 2 = 2 y resta 0 (este cero es el bit que le sigue a la izquierda al uno obtenido arriba)
2 / 2 = 1 y resta 0 (este cero es el bit que le sigue a la izquierda al cero obtenido arriba)
Con 1 no se puede continuar dividiendo pero se coloca éste a la izquierda del cero obtenido arriba, quedando como bit de mayor peso.
Entonces, 1810 = 100102.
En el caso de convertir un número decimal FRACCIONARIO, la parte fraccionaria debe ser multiplicada por 2 y el número binario es formado por 0's o 1's que aparecen en la parte correspondiente al entero. Solo que en este caso el número binario se escribe de izquierda a derecha, a diferencia de lo explicado antes para los números enteros. Las multiplicaciones se efectúan SOLO sobre la parte fraccionaria del número por lo que siempre serán 0.XXX. Nunca debe multiplicar 1.XXX. El proceso de multiplicaciones sucesivas concluye cuando quedan en cero la parte entera y la fraccionaria.
En este ejemplo convertiremos el número fraccionario 0.62510
0.625 x 2 = 1.250 (bit mas próximo al punto binario)
0.250 x 2 = 0.500 (bit a la derecha del uno obtenido anteriormente)
0.500 x 2 = 1.000 (bit a la derecha del cero obtenido anteriormente)
La operación concluye porque no queda parte fraccionaria para seguir multiplicando.
0.62510 = 0.1012
Pueden ocurrir situaciones donde cualquier número multiplicado por 2 nunca llegue a cero Esto causa que el número binario obtenido sea aproximado, como se observa en el ejemplo de abajo:
0.610
0.6 x 2 = 1.2 (bit mas próximo al punto binario)
0.2 x 2 = 0.4 (bit a la derecha del uno obtenido arriba)
0.4 x 2 = 0.8 (bit a la derecha del cero obtenido arriba)
0.8 x 2 = 1.6 (bit a la derecha del cero obtenido arriba)
0.6 x 2 = 1.2 (bit a la derecha del uno obtenido arriba)
0.2 x 2 = 0.4 (Retorna a la situación inicial... Ver segunda línea del proceso)
CONVERSIÓN DE DECIMAL A OCTAL:
En esta caso basta usar el mismo método de conversión con los números binarios. Pero en vez de hacer divisiones sucesivas por 2 hay que efectuarlas por 8. Nótese que el divisor corresponde a la base del sistema al cual se va a convertir. Lo mismo sucede con las multiplicaciones sucesivas, necesarias para convertir números fraccionarios.
Ejemplo 1: Convertir 24510
245 / 8 = 30 y resta 5 (dígito mas próximo al punto octal)
30 / 8 = 3 y resta 6 (dígito a la izquierda del 5 obtebido arriba)
No se puede seguir dividiendo, por lo que el 3 queda como dígito de mayor peso a la izquierda del 6 obtenido arriba.
Resultado: 24510 = 3658
Ejemplo 2: Convertir 17510
175 / 8 = 21 y resta 7 (dígito mas próximo al punto octal)
21 / 8 = 2 y resta 5 (dígito a la izquierda del 7 obtenido arriba)
No se puede seguir dividiendo, por lo que el 2 queda como dígito de mayor peso a la izquierda del 7 obtenido arriba.
Resultado: 17510 = 2578
Ejemplo 3: Convertir 0.43210
0.432 x 8 = 3.456 (dígito mas próximo al punto octal)
0.456 x 8 = 3.648 (dígito a la derecha del 3 obtenido arriba)
0.648 x 8 = 5.184 (dígito a la derecha del 3 obtenido arriba)
0.184 x 8 = 1.472 (dígito a la derecha del 5 obtenido arriba)
Resultado: 0.43210 = 0.33518
OBS.: Note que la la conversión no fué exacta.
CONVERSIÓN DE HEXADECIMAL A BINARIO:
Para efectuar la conversión basta con colocar los cuatro bits correspondientes a cada símbolo del número hexa respetando su posición original. Para saber el balor de cada símbolo sólo tiene que mirar la tabla de relación entre sistemas mostrada arriba.
Por ejemplo: Para convertir 7A216
7 A 2
0111 1010 0010
Resultado: 7A216 = 0111101000102
Otro ejemplo: Para convertir 3D4.F16
3 D 4 . F
0011 1101 0100 . 1111
Resultado: 3D4.F16 = 001111010100.11112
CONVERSIÓN DE BINARIO A HEXADECIMAL:
Primeramente hay que agrupar los bits de a cuatro comenzando por la derecha y siguiendo hacia la izquierda. Si bien en palabras cuya longitud sea múltiplo de cuatro esto no tiene obligatoriedad, en aquellas cuyo tamaño no sea multiplo de cuatro si selecciona de izquierda a derecha los grupos de bits quedarán mal conformados. Esto anterior para la parte entera. Para la parte fraccionaria el orden es inverso, o sea que se agrupa de izquierda a derecha. Nótese que siempre es del punto hacia afuera. Una vez formados los grupos basta con fijarse en la tabla de arriba y reemplazar cada grupo por el símbolo Hexa correspondiente.
Nada mejor que unos ejemplos:
Ejemplo 1: Convertir 1010110100102
1010 1101 0010
A D 2
Resultado: 1010110100102 = AD216
Ejemplo 2: Convertir 101110101102
101 1101 0110
5 D 6
Resultado: 101110101102 = 5D616
Ejemplo 3: 1101011110.1012
0011 0101 1110 . 1010
3 5 E . A
Resultado: 1101011110.1012 = 35E.A16
OBS: Cuando un grupo de bits de la parte entera queda formado por menos de cuatro bits sus posiciones a la izquierda deben ser asumidas como ceros, las cuales verá que no surten efecto en el valor. En tanto cuando esto ocurra en la parte fraccionaria pas posiciones a la derecha son las que deben ser completadas con cero. Aquí si tiene efecto. En el ejemplo de arriba los ceros se colocaron reasaltados para facilitar su visualización.
CONVERSIÓN DE HEXADECIMAL A DECIMAL:
Los números hexa son convertidos a su equivalene decimal multiplicando el peso de cada posición por el equivalente decimal del dígito de cada posición y sumando los productos.
Entonces:
12116 = 1 x 162 + 2 x 161 + 1 x 160
1 x 256 + 2 x 16 + 1 x 1
256 + 32 + 1
28910
A1C16 A x 162 + 1 x 161 + C x 160
10 x 256 + 1 x 16 + 12 x 1
2560 + 16 + 12
258810
OBS: Los valores que sustituyen a las letras se obtienen de la tabla dada arriba.
CONVERSIÓN DE DECIMAL A HEXADECIMAL:
Se puede realizar empleando dos procesos: Divisiones sucesivas por 16, cuando el número es entero, o multiplicaciones sucesivas por 16, cuando el número es fraccionario. Siguiendo los mismos lineamientos empleados con los otros sistemas numéricos.
Ejemplo 1: 65010
650 / 16 = 40 y resta 10 = A (dígito mas próximo al punto hexadecimal)
40 / 16 = 2 y resta 8 (dígito a la izquierda del anterior)
No se puede continuar dividiendo, por lo que el 2 queda como símbolo mas significativo a la izquierda del anterior.
Resultado 65010 = 28A16
Ejemplo 2: 258810
2588 / 16 = 161 y resta 12 = C (dígito mas próximo al punto hexadecimal)
161 / 16 = 10 y resta 1 (Dígito siguiente a la izquierda del obtenido arriba)
No se puede seguir dividiendo, por lo que el diez (la A) queda como símbolo mas significativo a la izquierda del obtenido arriba
Resultado 258810 = A1C16
Ejemplo 3: 0.64210
0.642 x 16 = 10.272 (dígito mas próximo al punto hexadecimal) 1010=A16
0.272 x 16 = 4.352 (dígito siguiente a la derecha del anterior)
0.352 x 16 = 5.632 (dígito siguiente a la derecha del anterior)
0.632 x 16 = 10.112 (Dígito siguiente a la derecha del anterior) 1010=A16
Resultado 0.64210 = 0.A45A16
OBS.: Note que la conversión no fué exacta.
Para poder transformar números binarios en su correspondiente decimal basta multiplicar el dígito binario (que sólo puede ser 0 o 1) por 2 elevado a la potencia correpondiente a la distancia de ese símbolo al punto decimal. Luego se suman los valores obtenidos y se consigue el número final.
Ejemplos:
102 = 1x21 + 0x20 = 1x2 + 0x1 = 2 + 0 = 210
1012 = 1x22 + 0x21 + 1x20 = 1x8 + 1x4 + 0x2 + 1x1 = 4 + 0 + 1 = 510
10012 = 1x23 + 0x22 + 0x21 + 1x20 = 1x8 + 0x4 + 0x2 + 1x1 = 8 + 0 + 0 + 1 = 910
Y para número fraccionarios:
0.0112 = 0x2-1 + 1x2-2 + 1x2-3 = 0x0.5 + 1x0.25 + 1x0.125 = 0 + 0.25 + 0.125 = 0.37510
0.1012 = 1x 2-1 + 0x 2-2 + 1 x 2-3 = 1x0.5 + 0x0.25 + 1 x0.125 = 0.5 + 0 + 0.125 = 0.62510
110.0102 = 1x22 + 1x21 + 0x20 + 0 x 2-1 + 1 x 2-2 + 0 x 2-3
1x4 + 1x2 + 0x1 + 0x0.5 + 1x0.25 + 0x.125
4 + 2 + 0 + 0 + 0.25 + 0
6.2510
Como se ve en los ejemplos el punto decimal aparece automáticamente en la posición correcta una vez efectuada la suma de los componentes.
DE DECIMAL A BINARIO:
Aquí veremos el método de divisiones y multiplicaciones sucesivas.
Para convertir un némero ENTERO decimal a una nueva base, el número decimal es sucesivamente dividido por la nueva base. Como en nuestro caso la nueva base es 2 el número será sucesivamente dividido por 2, O sea, el número original es dividido por 2, el resultado de ese cociente es dividido por 2 sucesivamente hasta que el cociente de 0. El resto de cada división es un número binario que conforma el número resultante de la conversión. El primer resultado producido (el primer resto obtenido) corresponde al bit mas próximo al punto decimal (o lo que se conoce como bit de menor peso). Los sucesivos bits se colocan a la izquierda del anterior. Notese que esto es como escribir en sentido contrario al empleado normalmente.
Veamos esto con un ejemplo:
Convertiremos a binario el número 1810
18 / 2 = 9 y resta 0 (este cero es el bit mas próximo al punto binario)
9 / 2 = 4 y resta 1 (este uno es el bit que le sigue a la izquierda al cero obtenido arriba)
4 / 2 = 2 y resta 0 (este cero es el bit que le sigue a la izquierda al uno obtenido arriba)
2 / 2 = 1 y resta 0 (este cero es el bit que le sigue a la izquierda al cero obtenido arriba)
Con 1 no se puede continuar dividiendo pero se coloca éste a la izquierda del cero obtenido arriba, quedando como bit de mayor peso.
Entonces, 1810 = 100102.
En el caso de convertir un número decimal FRACCIONARIO, la parte fraccionaria debe ser multiplicada por 2 y el número binario es formado por 0's o 1's que aparecen en la parte correspondiente al entero. Solo que en este caso el número binario se escribe de izquierda a derecha, a diferencia de lo explicado antes para los números enteros. Las multiplicaciones se efectúan SOLO sobre la parte fraccionaria del número por lo que siempre serán 0.XXX. Nunca debe multiplicar 1.XXX. El proceso de multiplicaciones sucesivas concluye cuando quedan en cero la parte entera y la fraccionaria.
En este ejemplo convertiremos el número fraccionario 0.62510
0.625 x 2 = 1.250 (bit mas próximo al punto binario)
0.250 x 2 = 0.500 (bit a la derecha del uno obtenido anteriormente)
0.500 x 2 = 1.000 (bit a la derecha del cero obtenido anteriormente)
La operación concluye porque no queda parte fraccionaria para seguir multiplicando.
0.62510 = 0.1012
Pueden ocurrir situaciones donde cualquier número multiplicado por 2 nunca llegue a cero Esto causa que el número binario obtenido sea aproximado, como se observa en el ejemplo de abajo:
0.610
0.6 x 2 = 1.2 (bit mas próximo al punto binario)
0.2 x 2 = 0.4 (bit a la derecha del uno obtenido arriba)
0.4 x 2 = 0.8 (bit a la derecha del cero obtenido arriba)
0.8 x 2 = 1.6 (bit a la derecha del cero obtenido arriba)
0.6 x 2 = 1.2 (bit a la derecha del uno obtenido arriba)
0.2 x 2 = 0.4 (Retorna a la situación inicial... Ver segunda línea del proceso)
CONVERSIÓN DE DECIMAL A OCTAL:
En esta caso basta usar el mismo método de conversión con los números binarios. Pero en vez de hacer divisiones sucesivas por 2 hay que efectuarlas por 8. Nótese que el divisor corresponde a la base del sistema al cual se va a convertir. Lo mismo sucede con las multiplicaciones sucesivas, necesarias para convertir números fraccionarios.
Ejemplo 1: Convertir 24510
245 / 8 = 30 y resta 5 (dígito mas próximo al punto octal)
30 / 8 = 3 y resta 6 (dígito a la izquierda del 5 obtebido arriba)
No se puede seguir dividiendo, por lo que el 3 queda como dígito de mayor peso a la izquierda del 6 obtenido arriba.
Resultado: 24510 = 3658
Ejemplo 2: Convertir 17510
175 / 8 = 21 y resta 7 (dígito mas próximo al punto octal)
21 / 8 = 2 y resta 5 (dígito a la izquierda del 7 obtenido arriba)
No se puede seguir dividiendo, por lo que el 2 queda como dígito de mayor peso a la izquierda del 7 obtenido arriba.
Resultado: 17510 = 2578
Ejemplo 3: Convertir 0.43210
0.432 x 8 = 3.456 (dígito mas próximo al punto octal)
0.456 x 8 = 3.648 (dígito a la derecha del 3 obtenido arriba)
0.648 x 8 = 5.184 (dígito a la derecha del 3 obtenido arriba)
0.184 x 8 = 1.472 (dígito a la derecha del 5 obtenido arriba)
Resultado: 0.43210 = 0.33518
OBS.: Note que la la conversión no fué exacta.
CONVERSIÓN DE HEXADECIMAL A BINARIO:
Para efectuar la conversión basta con colocar los cuatro bits correspondientes a cada símbolo del número hexa respetando su posición original. Para saber el balor de cada símbolo sólo tiene que mirar la tabla de relación entre sistemas mostrada arriba.
Por ejemplo: Para convertir 7A216
7 A 2
0111 1010 0010
Resultado: 7A216 = 0111101000102
Otro ejemplo: Para convertir 3D4.F16
3 D 4 . F
0011 1101 0100 . 1111
Resultado: 3D4.F16 = 001111010100.11112
CONVERSIÓN DE BINARIO A HEXADECIMAL:
Primeramente hay que agrupar los bits de a cuatro comenzando por la derecha y siguiendo hacia la izquierda. Si bien en palabras cuya longitud sea múltiplo de cuatro esto no tiene obligatoriedad, en aquellas cuyo tamaño no sea multiplo de cuatro si selecciona de izquierda a derecha los grupos de bits quedarán mal conformados. Esto anterior para la parte entera. Para la parte fraccionaria el orden es inverso, o sea que se agrupa de izquierda a derecha. Nótese que siempre es del punto hacia afuera. Una vez formados los grupos basta con fijarse en la tabla de arriba y reemplazar cada grupo por el símbolo Hexa correspondiente.
Nada mejor que unos ejemplos:
Ejemplo 1: Convertir 1010110100102
1010 1101 0010
A D 2
Resultado: 1010110100102 = AD216
Ejemplo 2: Convertir 101110101102
101 1101 0110
5 D 6
Resultado: 101110101102 = 5D616
Ejemplo 3: 1101011110.1012
0011 0101 1110 . 1010
3 5 E . A
Resultado: 1101011110.1012 = 35E.A16
OBS: Cuando un grupo de bits de la parte entera queda formado por menos de cuatro bits sus posiciones a la izquierda deben ser asumidas como ceros, las cuales verá que no surten efecto en el valor. En tanto cuando esto ocurra en la parte fraccionaria pas posiciones a la derecha son las que deben ser completadas con cero. Aquí si tiene efecto. En el ejemplo de arriba los ceros se colocaron reasaltados para facilitar su visualización.
CONVERSIÓN DE HEXADECIMAL A DECIMAL:
Los números hexa son convertidos a su equivalene decimal multiplicando el peso de cada posición por el equivalente decimal del dígito de cada posición y sumando los productos.
Entonces:
12116 = 1 x 162 + 2 x 161 + 1 x 160
1 x 256 + 2 x 16 + 1 x 1
256 + 32 + 1
28910
A1C16 A x 162 + 1 x 161 + C x 160
10 x 256 + 1 x 16 + 12 x 1
2560 + 16 + 12
258810
OBS: Los valores que sustituyen a las letras se obtienen de la tabla dada arriba.
CONVERSIÓN DE DECIMAL A HEXADECIMAL:
Se puede realizar empleando dos procesos: Divisiones sucesivas por 16, cuando el número es entero, o multiplicaciones sucesivas por 16, cuando el número es fraccionario. Siguiendo los mismos lineamientos empleados con los otros sistemas numéricos.
Ejemplo 1: 65010
650 / 16 = 40 y resta 10 = A (dígito mas próximo al punto hexadecimal)
40 / 16 = 2 y resta 8 (dígito a la izquierda del anterior)
No se puede continuar dividiendo, por lo que el 2 queda como símbolo mas significativo a la izquierda del anterior.
Resultado 65010 = 28A16
Ejemplo 2: 258810
2588 / 16 = 161 y resta 12 = C (dígito mas próximo al punto hexadecimal)
161 / 16 = 10 y resta 1 (Dígito siguiente a la izquierda del obtenido arriba)
No se puede seguir dividiendo, por lo que el diez (la A) queda como símbolo mas significativo a la izquierda del obtenido arriba
Resultado 258810 = A1C16
Ejemplo 3: 0.64210
0.642 x 16 = 10.272 (dígito mas próximo al punto hexadecimal) 1010=A16
0.272 x 16 = 4.352 (dígito siguiente a la derecha del anterior)
0.352 x 16 = 5.632 (dígito siguiente a la derecha del anterior)
0.632 x 16 = 10.112 (Dígito siguiente a la derecha del anterior) 1010=A16
Resultado 0.64210 = 0.A45A16
OBS.: Note que la conversión no fué exacta.
2.-Aritmética binaria
Las operaciones de sumar, restar, multiplicar y dividir en el sistema binario se hacen de igual forma que en decimal, sin embargo, es normal que la electrónica interna de las máquinas digitales solo tenga capacidad para sumar. Otras operaciones diferentes a la suma se consiguen mediante un conjunto de sumas: La resta de dos valores se consigue sumando a uno de los valores el complemento del otro, es un truco muy ingenioso que veremos en el siguiente apartado. El producto se hace sumando a sí mismo uno de los factores, tantas veces como indique el otro factor. Su eficacia radica en la gran velocidad de cálculo de los procesadores, siendo frecuente además un coprocesador matemático dedicado solo para operaciones, lo que reduce la carga del procesador central. Por último, una división solo es una cuestión de repartir a partes iguales que se puede conseguir por aproximaciones sucesivas.
1.5.-sistemas de base “n”
Todos los sistemas usados actualmente usan una base n. En un sistema de numeración de base n existen n símbolos. Al escribir un número en base n, el dígito d en la posición i, de derecha a izquierda, tiene un valor.
En general, un número escrito en base n como dmdm − 1…d2d1 tiene un valor
En general, un número escrito en base n como dmdm − 1…d2d1 tiene un valor
1.4.-Sistema hexadecimal
Tabla de multiplicar hexadecimal.
El sistema hexadecimal, a veces abreviado como hex, es el sistema de numeración posicional de base 16 —empleando por tanto 16 símbolos— Su uso actual está muy vinculado a la informática y ciencias de la computación, pues los computadores suelen utilizar el byte u octeto como unidad básica de memoria; y, debido a que un byte representa 28 valores posibles, y esto puede representarse como: .
En principio dado que el sistema usual de numeración es de base decimal y, por ello, sólo se dispone de diez dígitos, se adoptó la convención de usar las seis primeras letras del alfabeto latino para suplir los dígitos que nos faltan. El conjunto de símbolos sería, por tanto, el siguiente: .
Se debe notar que A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15. En ocasiones se emplean letras minúsculas en lugar de mayúsculas. Como en cualquier sistema de numeración posicional, el valor numérico de cada dígito es alterado dependiendo de su posición en la cadena de dígitos, quedando multiplicado por una cierta potencia de la base del sistema, que en este caso es 16. Por ejemplo: 3E0,A16 = 3×162 + E×161 + 0×160 + A×16-1 = 3×256 + 14×16 + 0×1 + 10×0,0625 = 992,625.
El sistema hexadecimal actual fue introducido en el ámbito de la computación por primera vez por IBM en 1963. Una representación anterior, con 0–9 y u–z, fue usada en 1956 por la computadora Bendix G-15.
El sistema hexadecimal, a veces abreviado como hex, es el sistema de numeración posicional de base 16 —empleando por tanto 16 símbolos— Su uso actual está muy vinculado a la informática y ciencias de la computación, pues los computadores suelen utilizar el byte u octeto como unidad básica de memoria; y, debido a que un byte representa 28 valores posibles, y esto puede representarse como: .
En principio dado que el sistema usual de numeración es de base decimal y, por ello, sólo se dispone de diez dígitos, se adoptó la convención de usar las seis primeras letras del alfabeto latino para suplir los dígitos que nos faltan. El conjunto de símbolos sería, por tanto, el siguiente: .
Se debe notar que A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15. En ocasiones se emplean letras minúsculas en lugar de mayúsculas. Como en cualquier sistema de numeración posicional, el valor numérico de cada dígito es alterado dependiendo de su posición en la cadena de dígitos, quedando multiplicado por una cierta potencia de la base del sistema, que en este caso es 16. Por ejemplo: 3E0,A16 = 3×162 + E×161 + 0×160 + A×16-1 = 3×256 + 14×16 + 0×1 + 10×0,0625 = 992,625.
El sistema hexadecimal actual fue introducido en el ámbito de la computación por primera vez por IBM en 1963. Una representación anterior, con 0–9 y u–z, fue usada en 1956 por la computadora Bendix G-15.
Suscribirse a:
Entradas (Atom)