lunes, 19 de noviembre de 2007

Prefacio a la publicación en Internet




Este es el material que forma parte de un libro que escribí con el título Fundamentos de Lógica Digital: Problemas y Soluciones. Los derechos del libro están registrados en México ante la Dirección General del Derecho de Autor bajo el Número de Registro de la Obra 09031981-005, con número foliado de ingreso 04289.

El libro está siendo subido a Internet, aprovechando la apertura dada por Google y Blogger, para que estos materiales estén a disposición de todos los estudiantes, maestros, técnicos e ingenieros de todos los países de habla hispana las 24 horas del día de modo permanente.

Desde los días en que fue escrito el libro, en virtud de los meteóricos avances tecnológicos que ha habido muchas cosas han cambiado. Por principio de cuentas, el costo de los diodos y transistores individuales que se requerían para la construcción de algo tan elemental como el sumador binario hacía casi obligatorio el estudio de técnicas como el mapa de Karnaugh para reducir al mínimo la cantidad de componentes discretos requeridos, lo cual en un proyecto para el cual se necesitaban cientos o quizá miles de estos componentes representaba ahorros significativos. Hoy en día, con la integración a gran escala, los ahorros que se pueden esperar obtener con una minimización de unos 28 componentes a unos 22 componentes son mínimos. La simplificación de la lógica requerida ya no es un asunto prioritario, aunque en proyectos pequeños resulta conveniente para reducir el espacio y el alambrado requerido para interconexión. Pero esto no es lo único que ha cambiado. Anteriormente, una vez que se diseñaba algún sistema con circuitos lógicos, la única forma de estar absolutamente seguro sobre el funcionamiento del mismo con los componentes especificados en el diseño era construír un prototipo en un laboratorio. Hoy en día, tales construcciones son obsoletas; podemos "construír" el sistema en un simulador mediantes programas especializados que puedan correr en una computadora de escritorio. Aunque nada sustituye a la experiencia de ir a un laboratorio y empezar a conectar fuentes de poder, interconectar componentes, y aplicar la energía para ver cómo trabaja la creación, la potencia de los programas de simulación permite vaticinar si el sistema diseñado trabajará en la forma que se esperaba o si el diseño fracasará por algún detalle pasado por alto. Ya no es necesario aplicar soldadura para conectar y remover la soldadura para desconectar, hoy solo basta oprimir unas cuantas teclas para "desconectar" y volver a "conectar" cualquier cosa en el monitor de la computadora.

Sin embargo, hay algunas cosas que no han cambiado, las cuales seguramente no cambiarán. Esas cosas son los principios fundamentales sobre los que descansa la lógica digital con la cual se diseñan y se construyen calculadoras de bolsillo, relojes electrónicos sin componentes mecánicos, sistemas médicos para determinar la presión sanguínea automáticamente, en fin, todo en lo cual está palpitando la lógica digital. Es a esos principios a los que estaba dirigido inicialmente el libro. Y es los mismos principios a los que se sigue dirigiendo hoy en día.

En los Estados Unidos, por acta de ley, el 17 de febrero de 2009 entra en vigor una ordenanza que mandata la substitución de todas las señales tradicionales de televisión por señales digitales. El mundo entero marcha pues hacia un futuro plenamente digitalizado, y el conocimiento esencial de la lógica digital ha pasado de ser un arte sofisticado para los técnicos altamente especializados con salarios altos a una verdadera necesidad para muchos cuyas vidas están siendo modificadas dramáticamente por la revolución informática que es a su vez el producto de la creciente sofisticación de los circuitos digitales.

Una innovación en la publicación de este libro en Internet es la adición de numerosas referencias a sitios de Internet en los cuales el lector puede encontrar mayor información acerca de varios temas. Anteriormente, la única forma de poder obtener mayores datos sobre algún tema en particular era consultando una buena biblioteca (algo difícil en la mayoría de los países de habla hispana tomando en cuenta el alto costo de los libros técnicos y las estrecheces económicas enfrentadas por la gran mayoría de las bibliotecas públicas en dichos países) o adquirir libros técnicos conteniendo la información buscada, lo cual tampoco era una buena opción para personas con presupuestos económicos limitados o con dificultades para obtener los libros deseados en sus propios países, teniendo que ordenar tales libros al extranjero a través de un distribuidor con los tiempos largos de espera que son frecuentes en estos casos. En la nueva era de Internet, esto ha llegado a su fin, y el mundo entero se ha convertido en una biblioteca electrónica gigantesca compartida en la cual los conocimientos especializados ya no son propiedad exclusiva de las naciones de alto nivel económico.

La colocación del libro en Internet ha representado un esfuerzo considerable, porque esencialmente ha requerido escribir el libro desde el principio, lo cual ha consumido una enorme cantidad de tiempo. Otros problemas han requerido tener que tomar en cuenta la capacidad limitada de algunos sistemas operativos y navegadores para "imprimir" en la pantalla del monitor ciertos caracteres tipográficos especiales que no son universales. Un ejemplo primario de esto es la operación de inversión lógica que es representada de modo tal que una variable lógica que haya pasado por un proceso de inversión es representada con una raya horizontal puesta encima de la letra que representa la variable que está siendo "negada", lo cual permite escribir expresiones de álgebra Boleana tales como:


Sin embargo, no todas las combinaciones posibles de sistemas operativos y de navegadores de Internet cuentan con la tecnología tipográfica lo suficientemente sofisticada como para permitir escribir en la pantalla del monitor este tipo de simbología (rayas horizontales puestas encima de las letras), lo cual ha ocasionado que mucho de lo que se publica en Internet relacionado de alguna manera con la lógica Boleana no recurra al uso de barras horizontales superiores para denotar variables o expresiones negadas. Para solventar esto y ayudar a los lectores a que puedan leer todo aquello relacionado de alguna manera con el álgebra Boleana y los circuitos lógicos que prescinden del uso de barras horizontales superiores limitándose al uso de apóstrofes, en varias partes del libro además de ponerse una raya encima de las letras que pueda ser exhibida por las combinaciones más recientes de sistemas operativos y navegadores, se han representado también en forma separada en varias partes del libro las expresiones con variables "negadas" con un color diferente, el color azul, (el color es una ayuda del autor a sus lectores, no una convención que sea seguida universalmente), esto además de ponerse como alternativa tipográfica un apóstrofe inmediatamente después de la letra que está siendo "negada", siguiendo una práctica aceptada en muchos textos para denotar la "negación lógica" con apóstrofes. De este modo, la expresión anterior será representada aquí en su forma equivalente del modo siguiente:

A + A' = 1

Cuando aparezcan en este libro en Internet expresiones con este tipo de notación (usando apóstrofes), se les pondrá entre paréntesis rectangulares inmediatamente después de la expresión que aparezca en una línea anterior complementada con alguna barra horizontal encima, esto con el fin de indicar que se trata de expresiones completamente equivalentes pero representadas de modo tipográfico distinto. A continuación se muestra un ejemplo de esto:


A + B = A · B

[__(A+B)' = A' · B'__]

Aquí, la expresión en la primera línea es igual a la expresión en la segunda línea. Ambas son completamente equivalentes.

Otro problema inherente a la publicación del libro en Internet es que, a diferencia del texto impreso en el cual se pueden poner muchos detalles de tamaño pequeño que aún así se pueden distinguir visualmente, muchos de estos detalles finos se pueden perder fácilmente al verse en un monitor de colores SVGA debido a que la gran mayoría de los monitores de computadoras tiene una capacidad de resolución limitada. Esto solo se puede compensar haciendo los diagramas y las figuras más grandes. Desafortunadamente, al hacer la figura más grande, el sitio huésped (en este caso, Blogger) activa automáticamente un atributo conocido como el "redimensionamiento de imagen" que "comprime" el tamaño de la imagen para que de este modo pueda caber dentro del área visual de la página. Afortunadamente, la imagen original no es descartada, sino que se puede obtener con el solo hecho de hacer "clic" con el mouse dentro de la imagen. En aquellos casos en los cuales sea altamente deseable llevar a cabo aquí la ampliación de la imagen con el fin de poder recuperar algunos datos visuales que se hayan perdido en el proceso de compresión, se le recomendará al lector la ampliación de la imagen con texto en letra verde que le dirá ampliar imagen. A continuación tenemos un ejemplo que ilustra este punto, el cual muestra una computadora básica construída en torno al microprocesador Z80 de Zilog:




Si el lector intenta obtener mayores detalles sobre este circuito, es posible que no lo logre. Sin embargo, si hace "clic" con el mouse dentro de la imagen, Blogger le enviará la imagen ampliada. Y si el lector hace nuevamente "clic" con el mouse dentro de la imagen, posiblemente obtendrá una ampliación todavía mayor (esto dependerá del navegador que está siendo utilizado, el tamaño del monitor que está siendo empleado, e inclusive el sistema operativo). También existe la opción en la mayoría de los navegadores actuales de poder abrir una ventana separada e independiente al activar algún enlace, lo cual permite llevar a cabo la operación de ampliar imagen mostrando la imagen ampliada en una ventana separada, permitiendo alternar fácilmente entre el texto y la imagen.

Es importante señalar que aunque no en todas las imágenes se le indica al lector que lleve a cabo el procedimiento de ampliar imagen, muchas de ellas pueden ser vistas con mejor resolución y mayor claridad si se lleva a cabo el procedimiento.

Existe otra razón para llevar a cabo el procedimiento de "ampliación de imagen". Una ventaja de las publicaciones en Internet es que permiten algo que simple y sencillamente no es posible en un texto impreso: la inclusión de archivos animados de formato gif, los cuales pueden destacar de modo a veces impresionante cierto punto de importancia, lo cual los convierte en una excelente ayuda pedagógica. La gran mayoría de estos archivos animados gif, al ser incluídos dentro de las páginas de Blogger, no muestran ningún tipo de animación, porque no lo permite el contenido de la página. Por ejemplo, el siguiente dibujo animado podrá estar mostrando o no una imagen completamente estática al momento de verlo dentro de esta página dependiendo del navegador que se esté utilizando (Firefox de Mozilla, Internet Explorer, Chrome de Google, Opera, etc.):




También el siguiente dibujo que es en realidad un dibujo animado tal vez aparezca como una imagen completamente estática:




Pero si se lleva a cabo el procedimiento de ampliar imagen en cada uno de los últimos dos dibujos, entonces al ser abandonada temporalmente la página para cargar cada archivo gif completo se podrá presenciar la animación, tras lo cual se puede volver a esta página tal y como se acostumbra hacerlo en todos los navegadores de Internet.

Esta obra al ser liberada a la Web pocos años atrás inicialmente fue optimizada para un monitor de 17" con una resolución de pantalla de 1024x768 pixeles, lo cual se convirtió en el estándard de facto para los monitores antiguos del tipo de tubo de rayos catódicos (CRT) que muestran una imagen con una “razón de aspecto” (aspect ratio) de “cuatro a tres”, o 4:3, siendo esto la razón de la anchura de una imagen (medida horizontalmente) a su altura (medida verticalmente). No tardaron en aparecer los monitores de pantalla plana que, inicialmente algo caros, fueron bajando de costo hasta ir reemplazando a una gran cantidad de monitores antiguos del tipo de tubo de rayos catódicos. Estos monitores de pantalla plana permiten una presentación panorámica de mucho mayor anchura con la cual sería posible meter imágenes grandes en su tamaño original sin necesidad de que el lector tenga que ampliar imagen. Sin embargo, no es posible rehacer la obra para aprovechar al máximo la disponibilidad de pantallas panorámicas planas por la sencilla razón de que en muchos países de habla hispana con presupuestos limitados aún se depende de monitores antiguos, y aún si se hiciera el cambio a monitores modernos de pantalla plana en forma masiva es probable que se seguirían utilizando muchas de esas computadoras “viejitas” a las cuales están conectados reteniendo sus sistemas operativos antiguos (Windows XP, Windows Millenium, etc.) que no garantizan en sus actualizaciones la capacidad para poder absorber toda la funcionalidad de las pantallas planas. Esto además de que la presentación de las bitácoras en formatos panorámicos no está garantizada para todos los navegadores usados hoy en día. De este modo, más por razones de compatibilidad con la gran variedad de sistemas utilizados hoy en día en los países de habla hispana que por razones de gusto, la obra se ha dejado intacta tal y como apareció por vez primera.

Dada la enorme superioridad del navegador Mozilla sobre el navegador Internet Explorer, en caso de que haya problemas para la visualización correcta de todos los materiales contenidos en este libro se recomienda fuertemente la instalación de Mozilla en la máquina en donde serán consultados estos materiales, lo cual no producirá conflictos con los navegadores ya puestos en la máquina y en cambio sí dará una opción superior verificada para este texto.

Es importante señalar que este autor no ha escatimado recursos para incluír la mayor cantidad posible de diagramas, sobre el precepto educativo de que la enseñanza visual es mucho más efectiva y mucho más duradera que la enseñanza meramente simbólica. Más aún, aprovechando el hecho de que prácticamente todos los monitores usados en la actualidad para conectarse a Internet bajo casi cualquier sistema operativo son monitores de color, capaces de desplegar una amplia gama de colores llamativos, a una gran cantidad de los dibujos del libro se les ha añadido colorido generosamente con el fin de hacer más atractiva la presentación y lograr mantener enfocada la atención del lector, a diferencia de los trabajos sometidos para su publicación en publicaciones profesionales en las cuales se acostumbra darle "seriedad" a los materiales aceptados para su publicación no sólo reduciendo a un mínimo indispensable la cantidad posible de dibujos y ejemplos ilustrativos sino haciéndolo todo en blanco y negro, como si fuese una sesión de luto solemne.

Cada uno de los problemas resueltos incluídos en el libro tiene un propósito educativo muy específico, ya sea el introducir o expandir alguna idea nueva, o el proporcionar algo de práctica en algún concepto clave, además de que están acomodados en orden creciente de dificultad, yendo de lo más fácil a lo más difícil, razón por la cual es importante estudiarlos en el orden en el que están puestos. En varias partes del libro, se incurre en detalles que pueden parecer redundantes a un extremo que podrá parecer hasta ridículo, como lo es el caso de varios problemas relativos al álgebra Boleana, en donde en varias partes se podrá apreciar una serie adicional de pasos de resolución que posiblemente serían eliminados por la mayoría de los editores de libros y que ciertamente no serían admisibles en una publicación profesional. Sin embargo, la intención de esta obra es hacerla accesible al mayor auditorio posible, lo cual incluye a gente que no necesariamente estará cursando estudios de grado universitario y que inclusive estará estudiando estos materiales de manera autodidacta, por cuenta propia, sin el beneficio de la ayuda de un maestro competente a su lado que le pueda estar aclarando sus dudas, razón por la cual ha sido necesario ir en detalle en cosas que de otra manera deberían ser muy claras para personas con grado universitario.

Una gran ventaja de la publicación de un libro en Internet en contraste con la publicación del mismo libro en papel tradicional es que el autor del libro puede recibir peticiones de sus lectores (maestros, estudiantes, público en general) pidiendo que cierto tema sea tratado con más detalle, con mayor claridad, o con mejores ejemplos y ayudas visuales. El autor de este libro está en la mejor disposición de atender a sus lectores en cualquier cosa que sirva para ampliar y mejorar el valor educativo de esta obra. Por otro lado, los errores ortográficos, tipográficos y humanos de plano le pueden ser comunicados al autor y pueden ser corregidos de modo casi inmediato, algo que no es posible en la edición impresa de un libro en el que a duras penas y esporádicamente se publica una "fe de erratas". El autor de este libro agradecerá a sus lectores el señalamiento de cualquier error de este tipo prometiendo una corrección expedita del mismo en la medida que su tiempo se lo permita, como también agradecerá el señalamiento de "enlaces muertos" de Internet citados en esta obra con el fin de removerlos y posiblemente reemplazarlos con sustitutos alternos. Esto convierte a un libro publicado en Internet en una obra "viva", a diferencia de un libro impreso que es incapaz de poder interactuar con sus lectores. Finalmente, la mejor ventaja de todas es que la publicación de un libro en Internet no tiene necesidad de tener que pasar por el lamentable proceso de revisión de parte de los editores del libro, los cuales en muchas ocasiones mutilan y cambian tanto el texto original que a fin de cuentas el texto publicado se asemeja muy poco a la intención original del autor.

Como otro signo de los tiempos actuales, en esta "segunda edición" del libro aparece algo que no apareció en la edición original: las direcciones de varios sitios en Internet en los cuales se pueden descargar (bajar) programas ejecutables, la mayoría de ellos gratuitos, para auxiliar a los estudiantes y técnicos en el estudio, análisis y diseño de los circuitos lógicos.

Para la publicación del libro en Internet, se han incluído además varios suplementos que no formaban parte de la obra original, empezando por el Suplemento # 1 que trata en mayor detalle sobre las familias de componentes electrónicos con los cuales se implementan las funciones lógicas básicas. El Suplemento # 1 deberá satisfacer en algo la curiosidad de quienes quieren saber qué es lo que está ocurriendo más a fondo dentro de esas "cajas negras" que hemos simbolizado como funciones lógicas básicas o derivados de las mismas. Aunque un técnico que conozca los fundamentos de la lógica digital se la puede pasar muy bien sin saber lo que hay adentro de esas "cajas negras", y puede ser capaz no sólo de reparar sistemas que utilicen lógica digital sino inclusive hasta de hacer diseños como todo un profesional, en muchos siempre hay alguna curiosidad por saber qué es lo que está ocurriendo "adentro". La exposición del tema de las familias lógicas es presentado en forma cualitativa y no en forma cuantitativa, ya que lo último nos requeriría entrar más a fondo sobre cuestiones tales como el funcionamiento de los transistores bipolares y los transistores de efecto de campo, las leyes de Kirchofff, efectos térmicos, etc, y este libro presupone que el lector promedio de esta obra introductoria al tema carece de tales conocimientos. Tenemos además el Suplemento # 2 que trata sobe el pináculo de la integración de funciones lógicas básicas a gran escala: el microprocesador, seguido del Suplemento # 3 que describe la forma en la cual trabaja el microprocesador y del Suplemento # 4 que de hecho es un suplemento dividido en dos partes que tienen cierta interrelación: el Suplemento 4a: Las instrucciones del microprocesador 8086 y el Suplemento 4b: Programación del microprocesador que describe cómo se lleva a cabo la elaboración de programas para que estos sean ejecutados por una microcomputadora. No hay mejor forma de tener una idea sobre cómo se lleva a cabo la programación de un microprocesador que haber visto un conjunto de instrucciones de un microprocesador típico, y el microprocesador 8086 de Intel ofrece por su relativa sencillez un buen punto de partida para ello. Además de estos suplementos, tenemos el Suplemento # 5 que describe cómo una microcomputadora se puede comunicar con el mundo exterior cuando existe tan sólo un canal (o un cable elétrico) a través del cual se pueda transmitir la información. Además de los suplementos ya indicados, se han anexado otros dos suplementos que describen en forma elemental ciertos circuitos integrados analógicos (en oposición a los circuitos integrados digitales tratados en el libro) de uso frecuente que suelen aparecer en sistemas híbridos en los cuales el diseño requiere integrar tanto componentes de electrónica digital como de electrónica analógica. Estos son el Suplemento # 6 que trata del amplificador operacional mejor conocido como op-amp, y el Suplemento # 7 que trata del temporizador 555, mejor conocido como timer 555.

Atendiendo una petición formulada por una cantidad considerable de lectores míos a quienes en cierta forma considero mis estudiantes o maestros colegas, he añadido de última hora un suplemento adicional, el Suplemento # 8 que proporciona una introducción al tema de los diagramas de escalera y la aplicación de dichos diagramas en la programación de controladores lógicos programables. Esto puede considerarse en cierta forma el punto de entrada hacia las áreas de la automatización industrial, muy en especial la robótica o mecatrónica.

Para aquellos estudiantes a nivel universitario que quieran encontrar en este libro algo de información acerca de la representación de los circuitos lógicos secuenciales usando el modelo teórico de la máquina Moore y el modelo teórico de la máquina Mealy, se ha incluído el Suplemento # 9 con una breve exposición sobre estos tópicos.

Además de las numerosas figuras y de los numerosos diagramas de los que consta la obra original, se han agregado dentro del libro figuras y diagramas disponibles libremente en Internet con el fin de ampliar aún más la claridad del texto. Esta profusión de imágenes deberá servir como un substituo a la falta de un pizarrón con el cual el autor de este libro normalmente aclararía a sus estudiantes temas un poco más difíciles de captar. Se ha hecho todo el esfuerzo posible por mantener el espíritu original del libro, haciendo modificaciones sólo cuando ello resulta en una mejor explicación o en la adición de más figuras y diagramas.

Con el fin de economizar tiempo y poder tener todos los capítulos de los que consta este libro disponibles de una manera casi inmediata, una alternativa cómoda y eficiente para aquellos estudiantes o instituciones educativas que tengan conexiones a Internet de baja velocidad consiste en ir "guardando" en el disco duro de la computadora (o en una memoria del tipo "flash drive" USB) cada página (completa) en que esta puesta cada capítulo conforme se van bajando los materiales. Esto siempre es posible en la mayoría de los navegadores actuales como Internet Explorer o Mozilla con la opción de la línea de menú puesta en "File" (Archivo) con una opción como "Save Page As..." (Guardar la página como...). De este modo, la siguiente vez que se tenga que consultar algún capítulo, en vez de accesar la página en Internet bajando lentamente todos los materiales se puede accesar directamente la página desde el mismo disco duro o desde la memoria "flash drive" (de cualquier modo se requiere conexión a Internet para bajar contenido adicional proporcionado por Blogger para poder construír la página) en una forma mucho más rápida, convirtiendo esta obra en un "libro electrónico" en el pleno sentido de la palabra.

Se ha agregado una bibliografía actualizada que puede ser utilizada como material de referencia y consulta posterior. Tal vez resulte de interés para muchos lectores el saber que algunos de los libros referenciados en la bibliografía se pueden descargar gratuitamente de Internet de uno o varios sitios.

Libero pues este libro con la esperanza de que sus materiales y sus enseñanzas puedan ser de alguna utilidad para quienes desean conocer más a fondo cuáles son los fundamentos esenciales en los que están basadas las computadoras que hacen posible hacer llegar esto mismo a todos a través de Internet.


El Autor
Armando Martínez Téllez

Prólogo al libro

Con el advenimiento de la microelectrónica, el hombre moderno ha visto aparecer ante sí una serie interminable de maravillas consideradas imposibles hace unas cuantas décadas. El reloj electrónico digital ha venido desplazando al reloj mecánico del mercado y se considera que en un futuro no lejano lo eliminará por completo. La calculadora electrónica ha sido perfeccionada a grado tal de que una calculadora de bolsillo puede efectuar operaciones matemáticas que las primeras computadoras de la postguerra (Segunda Guerra Mundial) no podían llevar a cabo, amén de ocupar edificios enteros. Las comunicaciones por satélite se han convertido en una realidad práctica. El teléfono automático de tonos que desplazó al teléfono mecánico rotatorio, el teléfono celular y la automatización del servicio de telefonía de larga distancia que antes requería de operadoras dedicadas también aparecieron conjuntamente. En la industria, las plantas cuyo proceso es controlado electrónicamente por computadoras son hoy día una necesidad absoluta. Existen innumerables ejemplos más que podrían ocupar volúmenes enteros.

Los avances actuales prometen para el futuro productos tan asombrosos como el diagnosticador médico automático, el carro electrónico controlado por computadora, visión electrónica para los ciegos y máquinas con inteligencia artificial, para citar únicamente unos cuantos.

Todo lo anterior ha sido producto del trabajo intenso y dedicado de muchos hombres de ciencia con gran visión para el futuro. Esta explosión tecnológica, revolución generada con el desarrollo continuo del circuito integrado, ha venido a crear una gran demanda de técnicos e ingenieros familiarizados con una rama nueva de la electrónica, la Lógica Digital, la cual provee las bases teóricas para el diseño de todo lo arriba citado.

Desafortunadamente, no son suficientes los expertos especializados en esta materia para atender la gran demanda que hay de ellos en los países industrializados. El problema es más grande aún en las naciones en vías de desarrollo. La falta de material didáctico unificado, consistente con las técnicas pedagógicas modernas, ha creado un vacío difícil de llenar que vuelve el estudio de esta rama algo problemático aún para estudiantes de los países industrializados, que tratan continuamente de conciliar las teorías abstractas aprendidas en la escuela con las enormes diferencias que encuentran en la práctica.

En un esfuerzo por llenar este gran vacío, sale a la luz esta obra con la esperanza de facilitar el avance tecnológico de todos los pueblos de Hispanoamérica.

La presente obra contiene más de 150 problemas resueltos en su totalidad. El núcleo central del libro son precisamente estos problemas resueltos. Un técnico que pueda aprender ya sea con la ayuda de un tutor o maestro o por cuenta propia a resolver todos los problemas del libro estará capacitado para poner sus manos encima de prácticamente cualquier sistema construído mediante circuitos digitales. El empleo de numerosos dibujos esquemáticos coloca a esta obra por encima de muchos libros publicados a la fecha. Es la opinión firme del autor, en contra de muchos libros de texto clásicos que frecuentemente presentan una gran cantidad de problemas al final de cada capítulo y cuyas soluciones nunca proporcionan o si lo hacen dichas soluciones se relegan a la parte trasera del libro limitándose a poner las de unos cuantos problemas selectos, que todo problema propuesto en un libro debe ir acompañado siempre por su solución; de lo contrario la solución de los mismos por parte del estudiante sin respuestas contra las cuales pueda verificar sus resultados rápidamente anula el entusiasmo al comienzo de un curso nuevo, volviéndolo monótono y aburrido.

Los símbolos lógicos empleados en este libro están de acuerdo con las normas impuestas por las especificaciones ASA Y32.14-1962 de la American Standard Graphic Symbols for Logic Diagrams (también conocidas como el estándard militar MIL-STD-806B), cuyo uso es adoptado en la actualidad por la industria en general no solo en los Estados Unidos sino en el mundo entero.

Se ha evitado al máximo el empleo de la lógica "negativa", ya que esta tiende a crear confusión inclusive en los ingenieros y técnicos más experimentados. Asimismo, se ha eliminado casi por completo en esta obra el empleo de matemáticas avanzadas, ya que estas tienen a incrementar innecesariamente la complejidad de la materia. Se considera aquí que el empleo del álgebra boleana (la cual es relativamente fácil de aprender en comparación con el álgebra clásica que se enseña en las escuelas de enseñanza media) es suficiente para analizar el comportamiento de los circuitos lógicos, lo cual se puede comprobar a través de esta obra. Temas tales como los diagramas de Venn, la unión e intersección de conjuntos, por nombrar unos cuantos, se han evitado por completo; ya que está comprobado que su uso, pese a que proporciona otras formas de estudiar el comportamiento de los circuitos lógicos, tienen un uso extremadamente limitado para el análisis práctico de los mismos en el campo.

Por la claridad con la cual se describe el material aquí contenido, se considera que esta obra será de utilidad no sólo para los estudiantes de Ingeniería de los institutos tecnológicos y universitarios de Hispanoamérica ansiosos de comprender los fundamentos de esta rama novedosa de la electrónica. Para los profesores de la materia es una fuente de material de examen y de ejemplos a desarrollar en clase. Para el estudiante es una fuente de información que podrá serle útil por el resto de su vida. Para el ingeniero práctico representa una colección extremadamente variada y útil de circuitos usados con gran frecuencia en la industria. Para el autodidacta, esta obra tal vez sea una necesidad.

El Autor

Contenidos

Tabla de Contenidos


Capítulo 1: La Numeración Binaria

Capítulo 1: Problemas resueltos

Capítulo 2: Las Tres Funciones Lógicas Básicas

Capítulo 2: Problemas resueltos

Capítulo 3: El Algebra Boleana

Capítulo 3A: Problemas resueltos

Capítulo 3B: Problemas resueltos

Capítulo 4: El Mapa de Karnaugh

Capítulo 4: Problemas resueltos

Capítulo 5: El Flip-Flop R-S. Memorias. Multivibradores

Capítulo 5: Problemas resueltos

Capítulo 6: El Flip-Flop J-K. Contadores

Capítulo 6A: Problemas resueltos

Capítulo 6B: Problemas resueltos

Capítulo 7: Tópicos Especiales

Capítulo 7: Problemas resueltos

Capítulo 8: Lógica Multivaluada

Capítulo 8: Problemas resueltos

Suplemento # 1: Las Familias Lógicas

Suplemento # 2: El Microprocesador (µP)

Suplemento # 3: Cómo Trabaja el Microprocesador

Suplemento # 4a: Las Instrucciones del µP 8086

Suplemento # 4b: Programación del Microprocesador

Suplemento # 5: Las Comunicaciones Asíncronas

Suplemento # 6: El Amplificador Operacional

Suplemento # 7: El Temporizador 555

Suplemento # 8: El PLC. Diagramas de escalera

Suplemento # 9: Máquinas Moore. Máquinas Mealy

Bibliografía

1: La numeración binaria



Desde que el hombre aprendió a hacer uso de razón, se vió en la necesidad de contar de alguna manera los objetos que le rodeaban y, muy en especial, los que poseía. El florecimiento del comercio en los tiempos antiguos agravó aún más la necesidad de utilizar un sistema numérico preciso y fácil de utilizar.

De esta manera, el hombre empezó a contar de diez en diez (que es lo que hoy conocemos como el sistema decimal) influenciado por el hecho de que poseía diez dedos. Conforme ascendía la numeración, cada unidad numérica recibía un símbolo diferente (por ejemplo, 3, 4, 5 en la numeración arábiga). Después del nueve, se tomaba el símbolo que representaba la menor cantidad de unidades (el 1) y se le agregaba un cero, con lo cual se obtenía la cantidad décima. La operación empezaba de nuevo su conteo ascendente hasta llegar a diecinueve, después de lo cual se aumentaba la cifra a la izquierda en una unidad poniéndose un cero a la derecha de la misma, repitiéndose el proceso indefinidamente. Podemos observar que, sin el cero, se habría requerido un símbolo diferente para cada número mayor que nueve (por ejemplo, el símbolo A para el diez, el símbolo B para el once, el símbolo C para el doce, etc.). En efecto, sin el cero, cualquier sistema numérico resulta extremadamente complejo e impráctico (podemos imaginar los problemas que padecían los romanos cuando en su sistema de numeración romana trataban de multiplicar una cantidad por otra, cuando trataban de multplicar algo como XXIII por LIV en vez de lo que para nosotros es 23 por 54). No en vano se ha proclamado la invención del cero como uno de los más importantes avances en la historia de la humanidad.

Nuestra atención se vuelve ahora hacia un problema filosófico. Supongamos que el hombre en vez de tener cinco dedos en cada mano hubiese tenido tres. ¿Cuál habría sido nuestra forma de contar?

Un momento de reflexión nos indica que nuestro sistema numérico en tal caso no habría sido muy diferente del sistema decimal que conocemos en la actualidad. Al tener tres dedos en cada mano, nuestra inclinación natural habría sido contar de seis en seis, de la misma manera en que el hombre moderno con cinco dedos en cada mano cuenta de diez en diez. Al contar de seis en seis, la numeración ascendería de la manera siguiente (empezando con cero, el siguiente número es 1, el siguiente número es 2, el siguiente número es 3, el siguiente número es 4, el siguiente número es 5, como lo muestra la primera columna con fondo de color ciano; pero el siguiente número no es 6 sino 10; tras lo cual el siguiente número es 11, tras lo cual el siguiente número es 12, el siguiente número es 13, el siguiente número es 14, el siguiente número es 15, como lo muestra la segunda columna; pero el siguiente número no es 16 sino 20, el siguiente número es 21, y así sucesivamente, moviéndonos de este modo de izquierda a derecha de una columna a otra en el registro del conteo ascendente):


Notamos que el sistema numérico basado en seis dedos, el sistema numérico base seis, nunca utiliza el símbolo 6, de la misma manera que en el sistema númerico base diez (o sistema decimal) no existe ningún símbolo especial para representar el número diez. Notamos también que el conteo ascendente en el sistema numérico base seis procede en forma similar al conteo ascendente en el sistema numérico base diez. Al llegar al 5, se toma el símbolo que representa la menor cantidad de unidades (el 1) y se le agrega un cero, obteniéndose así la siguiente cifra. El proceso se repite indefinidamente de modo similar al proceso utilizado en el sistema decimal. El número que sigue a 555, por ejemplo, sería 1000. Nótese que una colección de ocho objetos en el sistema decimal se representa con el número 8 mientras que en el sistema numérico base seis se representa con el número 12 (esta equivalencia se representa simbólicamente como 810 = 126).

Por extraño que el sistema numérico base seis nos parezca, debemos recordar que éste no nos sería tan extraño si tuviésemos tres dedos en cada mano.

Vemos pues, que la única razón por la cual contamos de diez en diez es porque tenemos diez dedos en ambas manos. Vemos también que son igualmente posibles otros sistemas numéricos, no sólo el sistema numérico base seis, sino también el sistema numérico base cuatro, el sistema numérico base siete, etc.

Podemos convertir un número cualquiera de nuestra base decimal a una base menor (por ejemplo, un número en sistema decimal a su equivalente en sistema base tres) por el método de la división sucesiva. Este método se lleva a cabo de la siguiente manera:

(1) Se divide el número decimal dado entre la base al cual queremos convertir al número, y se destaca el residuo obtenido.

(2) El cociente obtenido de la división anterior se vuelve a dividir nuevamente entre la base a la cual queremos convertir el número, y se destaca el residuo así obtenido.

(3) El procedimiento anterior se repite hasta que ya no es posible seguir dividiendo sin obtener una fracción con punto decimal. Al llegar a esta etapa, se destacan el dividendo obtenido así como el residuo.

(4) El número correspondiente a la base menor se obtiene escribiendo como el primer dígito el dividendo obtenido en el último paso anterior, y poniendo como el segundo dígito (a su derecha) el residuo obtenido del también del último paso anterior.

(5) Para el tercer dígito, escribimos a la derecha del resultado anterior el residuo obtenido de la penúltima división.

(6) El paso anterior se repite hasta que se hayan agotado todos los dígitos.

Para convertir un número en una base menor al sistema decimal (por ejemplo, un número en el sistema base siete a su equivalente en sistema decimal), se multiplica la primera cifra del número por la base menor. Al producto resultante se le agrega la segunda cifra del número y se vuelve a multiplicar por la base menor. El procedimiento se continúa hasta agotar las cifras, después de lo cual se tendrá el número decimal.

De un interés especial para nosotros es el sistema numérico base dos o sistema binario.

Si el hombre hubiera tenido tan solo un dedo en cada mano, entonces para ir contando “hacia arriba de uno en uno” en el sistema base dos o sistema binario, y tomando en cuenta que así como en el sistema decimal o sistema base diez al que estamos acostumbrados no existe un símbolo especial para representar el número diez tampoco en el sistema binario existirá un símbolo especial para representar el número dos, el conteo binario ascendente "hacia arriba" procedería de la manera siguiente:


El número binario 110 que se ha destacado con fondo de color amarillo es el que se utiliza para identificar con el símbolo “6” lo que nosotros por costumbre llamamos un sexto objeto o una colección de seis cosas. En una canasta de manzanas, el objeto, que podría ser la sexta manzana, sigue siendo el mismo independientemente de los símbolos que usemos para identificarlo. Lo único que cambia es nuestra forma de representarlo, que como hemos visto es hasta cierto punto arbitraria. (En esta lista de números binarios se ha destacado también, con fondo color ciano, el número binario que representa a un onceavo objeto.) Y así, en el sistema binario, tal vez al ir al mercado a comprar unas naranjas le diríamos a la encargada del puesto algo como “por favor deme 101 naranjas”. Y si esto nos parece raro, hay que meditar que para los individuos de una civilización alienígena que tuviesen siete dedos en cada mano, dando un total de 14 dedos (con lo cual su sistema de numeración seguramente sería base 14), nuestro sistema de contar decimal tal vez les parecería sumamente extraño. Todo es cuestión de perspectiva.

Podemos representar de la siguiente manera con un archivo gráfico animado un conteo ascendente en el sistema numérico binario desde el 1 (decimal) hasta el 24 (decimal), mostrándose del lado izquierdo (en color azul) el número decimal, y mostrándose del lado derecho su equivalente en numeración binaria:

Decimal          Binario

¿Y por qué es de tanto interés para nosotros el adentrarnos en un sistema numérico como el sistema binario, como si no tuviéramos ya suficientes problemas con el sistema decimal?

Al tratar de utilizar circuitos eléctricos para llevar a cabo operaciones matemáticas (o bien, operaciones de control), nos encontramos con el hecho de que existen únicamente dos estados posibles que se pueden utilizar para llevar a cabo procesamiento de información. Uno es el estado de encendido, lo cual podemos representar con el número uno (“1”). El otro es el estado apagado, el cual representamos como cero (“0”).

Imaginemos una hilera de cinco focos, en la cual el primer foco (a la izquierda) está apagado, los dos focos siguientes encendidos, el cuarto foco apagado y el quinto foco encendido. Representando los focos encendidos con un “1” cada uno y los focos apagados con un “0” cada uno, obtenemos la siguiente representación:

01101

Este número representa el número 13 en el sistema decimal. Cada dígito del número binario, encendido o apagado, se conoce como bit (en la lengua inglesa, la palabra bit significa “pedacito”). Una serie de varios bits en sucesión como la arriba mostrada se conoce comunmente como palabra binaria o simplemente palabra. Así pues, siguiendo la costumbre legada de los árabes sarracenos, en la numeración binaria, al igual que en la numeración decimal en la cual conforme se va contando hacia arriba las cifras de magnitud creciente correspondientes a las unidades, las decenas, las centenas, etc. se van escribiendo hacia la izquierda, también en la numeración base 2 se acostumbra escribir los números binarios creciendo hacia la izquierda, y al hacer esto el “bit” de menor magnitud que es puesto en el extremo derecho es conocido como el bit menos significativo (en inglés: Least Significant Bit ó LSB), mientras que el “bit” de mayor magnitud es puesto en el extremo izquierdo y es conocido como el bit más significativo (en inglés: Most Significant Bit ó MSB).

A continuación se muestra una tabla conocida como tabla de equivalencias:


Usando tablas como ésta es posible acortar la conversión de un número en sistema binario a sistema decimal y viceversa. Por ejemplo, si se desea encontrar el equivalente decimal de la palabra 10110, notamos que:

10110 = 10000 + 100 + 10

= 16 + 4 + 2

= 22

Veamos esto mismo desde otro punto de vista, desde el punto de vista de la representación de un número usando potencias de dos. La tabla anterior de equivalencias puede ser representada usando potencias del número dos (en donde por definición una exponenciación a la potencia cero es tomada como la unidad):

20 = 1

21 = 2

22 = 2×2 = 4

23 = 2×2×2 = 8

24 = 2×2×2×2 = 16

25 = 2×2×2×2×2 = 32, etc.

Teniendo esto en mente, podemos construír una tabla de potencias de dos como la siguiente:


Esta tabla, basada en las potencias del número dos (en donde por definición la exponenciación a la potencia cero es tomada como igual a la unidad) se utiliza de la siguiente manera: supóngase que queremos convertir el número decimal 59 a su equivalente en sistema binario. Este número es mayor que 32 pero es menor que 64, de modo tal que la primera cantidad que formará parte del mismo será 25 = 32. Si le sumamos el siguiente número inferior de la tabla, 24 = 16, la cantidad cumulativa será 48, la cual no excederá el número decimal 59, de modo tal que podemos agregar 24 al sumando cumulativo. Y si le sumamos el siguiente número inferior de la tabla, 23 = 8, la cantidad cumulativa será 56, la cual tampoco excederá el número decimal 59, de modo tal que podemos agregar 23 al sumando cumulativo. Sin embargo, no podemos agregar 22 = 4 porque la suma cumulativa excedería el número decimal 59, de modo tal que descartamos 22 = 2 como posible componente de la suma cumulativa. Procediendo de esta manera hasta agotar la tabla, vemos que el número decimal 59 se puede representar en potencias de dos de la manera siguiente:

59 = 32 + 16 + 8 + 0 + 1 + 1

59 = 25 + 24 + 23 + 0 + 21 + 20

Con esto, la representación del número 59 en ambas bases (la base decimal y la base 2) procede de manera inmediata consultando la tabla:

5910 = (100000)2 + (10000)2 + (1000)2 + (0)2 + (10)2 + (1)2

5910 = 1110112

Este resultado puede ser corroborado con el método de la división sucesiva.

Para el procedimiento inverso, esto es, convertir un número de cierta base a su equivalente en sistema decimal, podemos hacer tal cosa de manera sencilla llevando a cabo la expansión del número a través de la representación en las potencias del número en su base orignal. Por ejemplo, si queremos convertir el número binario 101001 a su equivalente en sistema decimal, la expansión sobre las potencias de dos se llevará a cabo de la siguiente manera:

1010012 = (1)25 + (0)24 + (1)23 + (0)22 + (0)21 + (1)20

1010012 = 32 +0 + 8 + 0 + 0 + 1

1010012 = 4110

Ahora bien; podemos sumar, restar, multiplicar y dividir en el sistema binario de la misma manera en la cual llevamos a cabo dichas operaciones en el sistema decimal.

Existe una forma especial de representar los números decimales usando el sistema binario, para que estos se parezcan un poco más a la numeración que usamos (aunque no es notación binaria pura). Cada dígito decimal se representa por su equivalente por separado, sin llevar a cabo conversión alguna. Por ejemplo, el número 3497 se representa como sigue:


Esta forma de representación se conoce como el código decimal codificado binario BCD (del inglés Binary Coded Decimal).

Ahora nos plantearemos otra dilema filosófico un poco diferente al problema con el cual comenzamos este capítulo: Supóngase que el hombre en vez de tener cinco dedos en cada mano hubiese tenido ocho. ¿Cuál habría sido nuestra forma de contar? (El caso no es tan hipotético como pudiera creerse; hay personas que de nacimiento son portadoras de una falla genética que produce en ellas algo conocido como polidactilismo, lo cual es una expresión médica para designar la presencia de más de cinco dedos ya sea en las manos o en los pies; y aunque pudiera parecer que existe alguna ventaja en poseer una mayor cantidad de dedos en ambas manos o pies que los cinco que actualmente tenemos, la evolución por alguna razón no ha favorecido una cantidad mayor de dedos).

Nuevamente, un momento de reflexión nos indica que nuestro sistema numérico en tal caso no habría sido muy diferente del sistema decimal que conocemos en la actualidad, excepto que estaríamos contando de dieciseis en dieciseis. Pero esto nos lleva a un problema. Para el conteo en el sistema decimal, tenemos a nuestra disposición diez símbolos diferentes (1, 2, 3, etcétera, más el cero que sirve para continuar adelante con el conteo sin tener que recurrir a nuevos símbolos para representar lo que para nosotros es el número 10, el número 11, el número 12, etcétera). Pero en el caso en el que hubieramos tenido más de cinco dedos en cada mano, aún teniendo el cero a nuestra disposición (como lo tuvieron los antiguos Mayas en su sistema de numeración Maya) forzosamente habríamos tenido que inventar nuevos símbolos para acomodarnos al conteo ascendente de más de nueve objetos o cosas. Los nuevos símbolos podrían ser algo como lo muestra la siguiente tabla que nos da las equivalencias entre cada símbolo nuevo de un sistema de numeración hexadecimal y su equivalente en nuestro sistema de numeración decimal :


Sin embargo, esta alternativa de tener que inventar nuevos símbolos para poder trabajar con sistemas de numeración de bases mayores a la base decimal se antoja poco apetecible por sus obvios inconvenientes. Debe de haber una alternativa más sencilla.

¿Y por qué no utilizar para un sistema de numeración hexadecimal símbolos que ya nos son conocidos y con los cuales estamos ampliamente familiarizados? Símbolos tales como las letras de nuestro alfabeto.

Al tener una abundancia de dedos en ambas manos, muy posiblemente habríamos inventado algún símbolo único como el símbolo numérico A para representar en dicho sistema numérico base-16 lo que hoy denotamos como diez con dos símbolos (10). Para representar el equivalente del número decimal 11 nuestro doceavo dedo se podría haber representado con otro símbolo nuevo, como el símbolo numérico B. De este modo, habríamos tenido un símbolo diferente para representar cada número hasta antes de llegar al número 16 (decimal), de acuerdo a la siguiente tabla de conversión:


Y al llegar a lo que vendría siendo el equivalente del número 16 decimal, se tomaría el símbolo que representa la menor cantidad de unidades (el 1) y se le agregaría un cero, obteniéndose así la siguiente cifra. El proceso se repite indefinidamente de modo similar al proceso utilizado en el sistema decimal. Un conteo ascendente en este sistema numérico hexadecimal procede de la siguiente manera:

Base 10_____Base 16

0__________0
1__________1
2__________2
3__________3
4__________4
5__________5
6__________6
7__________7
8__________8
9__________9
10__________A
11__________B
12__________C
13__________D
14__________E
15__________F
16__________10
17__________11
18__________12
19__________13
20__________14
21__________15
22__________16
23__________17
24__________18
25__________19
26__________1A
27__________1B
28__________1C
29__________1D
30__________1E
31__________1F
32__________20

Podemos representar de la siguiente manera con un archivo gráfico animado un conteo ascendente en el sistema numérico hexadecimal desde el 1 (decimal) hasta el 50 (decimal):

Decimal        Hexadecimal


Obsérvese con cuidado lo que está sucediendo en este conteo dinámico. Al ir contando hacia arriba, y al llegar al número 99 hexadecimal, el siguiente número no es 100 sino 9A, el que le sigue es 9B, y así sucesivamente. Del mismo modo, en el caso del número 9999 hexadecimal, si le sumamos 1 el siguiente número no es 10000 sino 999A, el que le sigue es 999B, y así sucesivamente.

Para destacar un número como un número que está basado en el sistema hexadecimal, utilizamos una letra h ya sea al final del número o al principio del número o como subscripto del número. Así, el número 19 hexadecimal se vendría destacando con una de las siguientes representaciones:

19h

19h

Por extraño que nos parezca, este sistema numérico hexadecimal es muy utilizado en el área de las ciencias computacionales. La razón de su enorme utilidad radica en el hecho de que existe una relación sencilla entre las representaciones de un número binario puro y su equivalente en sistema hexadecimal cuando el número binario es un múltiplo de cuatro bits:


aaaaaBinario___Hexadecimal

0000________0
0001________1
0010________2
0011________3
0100________4
0101________5
0110________6
0111________7
1000________8
1001________9
1010________A
1011________B
1100________C
1101________D
1110________E
1111________F

lo cual simplifica enormemente la conversión de un sistema numérico a otro. Por ejemplo, si queremos encontrar el equivalente hexadecimal del siguiente número binario:

11000101000001101000000101011000

todo lo que tenemos que hacer es “separar” el número binario en grupos de cuatro bits conocidos como nibbles (la palabra inglesa nibble se traduce al castellano como “mordisquito”; dos nibbles forman un octeto de bits conocido como byte, en donde la palabra byte es un homófono de la palabra inglesa bite que significa “mordisco”):

1100 0101 0000 0110 1000 0001 0101 1000

tras lo cual podemos convertir directamente cada grupo individual en su equivalente hexadecimal:

C 5 0 6 8 1 5 8

Para convertir un número hexadecimal a binario, simplemente aplicamos el procedimiento inverso. Si queremos convertir el número hexadecimal AF37 a su equivalente binario, lo hacemos tomando en cuenta que A=1010, F=1111, 3=0011 y 7=0111. Así, el número hexadecimal de este ejemplo es igual a:

1010 1111 0011 0111

o en forma más abreviada (aunque un poco menos clara):

1010111100110111

Puesto que se requiere de muchos bits para poder representar un número de tamaño moderado, al leer un número de 32 bits almacenado en un registro como el siguiente:

1010 1111 0101 0111 0110 0001 0001 1011

es mucho más rápido y fácil para un humano escribir o leer:

AF57611B

que el número binario mostrado.

Al igual que en la numeración decimal existen y se manejan con frecuencia los números negativos, precedidos por un signo menos (-) puesto a la izquierda de los mismos, en la numeración binaria también existen y se manejan con frecuencia los números negativos. Sin embargo, en la numeración binaria para distinguir un número negativo de uno positivo no se acostumbra hacerlo con un signo de menos (-). Una forma de llevar a cabo algún tipo de distinción es antecediendo la cifra binaria con un “0” si la cifra es positiva (+) ó con un “1” si la cifra es negativa (-). Si reservamos el primer bit hacia la izquierda para representar el signo del número binario, entonces los siete bits restantes en una palabra binaria de un “byte” no son suficientes para codificar números decimales con suficiente precisión, y en tal caso se requieren por lo menos dos bytes para poder representar números decimales hasta 32 mil. Bajo la convención universal del signo que acabamos de dar:

00000001 representa al número decimal 1

10000010 representa al número decimal -2

Una desventaja de esta representación es que los números binarios de signos distintos no pueden sumados en la forma usual como se acostumbra hacerlo, ya que si sumamos los dos números binarios anteriores el resultado será 10000011, o sea -3, lo cual es incorrecto (la respuesta correcta debería ser -1). De cualquier modo, mantendremos esta representación hasta que encontremos en capítulos posteriores otra que nos permita llevar a cabo en forma correcta operaciones aritméticas con números de signos distintos en el sistema binario obteniendo siempre la magnitud correcta con el signo correcto. De cualquier modo, lo que no cambiará será el uso del primer bit reservándolo para denotar el signo de la cantidad.

Hemos hablado del uso de la numeración binaria para poder ir contando números enteros de uno en uno en el sistema base-2. Es posible que aquí haya algún lector que se pregunte: ¿será posible utilizar también el sistema binario para contar y medir fracciones, cantidades menores que la unidad, tal y como lo hacemos en el sistema decimal? La respuesta es afirmativa, y para poder lograrlo tenemos que introducir en la numeración binaria el mismo artificio que usamos para distinguir números enteros de números menores que la unidad: el punto, que en este caso en vez de ser el punto decimal será el punto binario.

Una fracción representa una división. Al igual que como ocurre en el sistema decimal, las fracciones en el sistema binario pueden ser escritas con un numerador y un denominador separados con una barrita horizontal:


En el sistema decimal las fracciones pueden ser escritas con un punto decimal. Ejemplo de ello son:


Del mismo modo, las fracciones en el sistema binario también pueden ser escritas utilizando un punto para ello, aunque en lugar de hablar de un punto decimal estamos hablando de un punto binario. Así:


Dicho de otra manera, para poder representar fracciones en el sistema binario, el principio sigue siendo el mismo. Los símbolos decimales para cantidades fraccionarias son construídos a base de décimas, centésimas (décimas de décimas), milésimas (décimas de décimas de décimas), diezmilésimas, y así sucesivamente. Los símbolos binarios se construyen a base de mitades, mitades de mitades, mitades de mitades de mitades, y así sucesivamente. Esto nos permite construír la siguiente tabla de equivalencias:


y así sucesivamente. Otras fracciones pueden ser representadas como combinaciones de estos números clave que aparecen en la tabla de equivalencias. Así:

.11 = 1/2 + 1/2 = 3/4

.101 = 1/2 + 1/3 = 5/3

Estos resultados los podemos corroborar de la siguiente manera, representando la fracción como el cociente de dos enteros binarios:

.11 = 11/100 = 3/4

.101 = 101/100 = 5/3

Además del sistema de numeración binaria, del sistema BCD, y del sistema hexadecimal, existen otros sistemas numéricos, entre los cuales tiene cierta prominencia el sistema octal o sistema base-8. Para fines comparativos, a continuación se dá un listado de los primeros diez números en su equivalente decimal, su equivalente octal, y su equivalente binario:


El papel que desempeña el sistema octal en el desarrollo de sistemas digitales basados en circuitos binarios tiene que ver con la relación sencilla que existe entre los símbolos binarios y los símbolos octales. Para poder apreciar mejor esta relación, examínese los siguientes símbolos equivalentes para cantidades un poco mayores:


Para una mejor visualización, cada equivalente binario ha sido separado en grupos de tres dígitos (siguiendo un orden de derecha a izquierda), lo cual nos permite descubrir que cada grupo de tres dígitos se corresponde con el dígito octal equivalente en la misma posición. De este modo, un número binario como 10001001 puede ser separado en grupos de tres dígitos como 10 001 001, lo cual nos permite determinar de inmediato a su equivalente octal como 211. El número binario 10001001 equivale al número decimal 137, y podemos verificar que el número octal 211 también equivale a este número decimal por la táctica usual de asignarle a cada dígito octal su valor posicional en el sistema decimal:

2118 = 2(82) + 1(81) + 1(80)

2118 = 2(64) + 1(8) + 1(1)

2118 = 128 + 8 + 1 = 13710

El propósito de la numeración octal (al igual que la numeración hexadecimal) es tender un puente entre el sistema de numeración decimal que nos es tan familiar y el menos entendible sistema binario. Los símbolos decimales constituyen nuestro medio cotidiano de trabajo para cálculos aritméticos, pero el lenguaje de “unos” y “ceros” es el lenguaje natural con el cual trabajan las máquinas. La desventaja de los números binarios es que se requiere una serie larga de “unos” y “ceros” para poder representar una cantidad que en el sistema decimal se puede representar de manera más compacta, como el número 10001001 que equivale al número decimal 137. La ventaja de utilizar símbolos octales es que son abreviaturas convenientes de símbolos binarios, y el utilizar números octales en lugar de los más familiares números decimales representa un paso natural para acortar la distancia que separa a una computadora “humana” acostumbrada a trabajar en el sistema decimal y la máquina.

1: Problemas resueltos




Problema: Escribir un conteo normal de 20 objetos usando el sistema numérico base 4.


Problema: ¿A cuánto equivale el número 13 decimal en sistema numérico base 6?


El número 13 en sistema decimal equivale al número 21 en sistema base 6. Simbólicamente:

1310 = 216

Problema: Convertir el número 20 al sistema base 4 usando el método de división sucesiva.

Aplicando el método de la división sucesiva, tenemos lo siguiente:


La equivalencia del número decimal 20 a su correspondiente 1104 en el sistema base 4 se puede representar de la siguiente manera:

2010 = 1104

Obsérvese cómo para convertir el número 20 decimal al número 110 en sistema base 4, dividimos primero el número (20) entre la base (4) destacando el primer residuo (0). El cociente de la primera división (5) se vuelve a dividir entre la base (4) agregando agregando el residuo de la segunda división (1) al residuo de la primera (0) para ir formando el número. Puesto que el segundo cociente (1) ya no se puede dividir entre 4, con el segundo cociente (1), el segundo residuo (1) y el primer residuo (0) formamos el número 110 en el sistema numérico base 4.

Problema: Convertir el número 19 al sistema base 2 usando el método de la división sucesiva.

Procedemos del mismo modo que en el problema anterior:




Simbólicamente, podemos expresar el resultado de la manera siguiente:

1910 = 100112

Problema: Convertir el número 49 al sistema base 3 usando el método de la división sucesiva y comprobar el resultado haciendo una tabla.



Simbólicamente, podemos expresar el resultado de la manera siguiente:

4910 = 12113

La tabla completa de equivalencias hasta llegar al número deseado, en la cual se ha destacado en color ciano la numeración ascendente en sistema decimal, es la siguiente:




Obviamente, resulta mucho más cómodo inclusive para números medianamente pequeños recurrir al método de la división sucesiva que tratar de llegar a un equivalente en otra base numérica mediante la construcción de una tabla.

PROBLEMA: Transformanndo los números decimales 13 y 25 en sus equivalente binarios, sumar dichos números tanto en el sistema decimal como en el sistema binario, poniendo ambas resoluciones la una junto a la otra con el fin de comparar las similitude. Tras esto, conviértase la respuesta binaria a su equivalente decimal usando la tabla de potencias de 2 con el fin de checar la respuesta obtenida de la adición binaria.

Primero se llevará a cabo la "descomposición" de los números 13 y 25 en sus equivalentes en el sistema base 2:





A continuación, se llevará a cabo la suma de los números decimales 13 y 25, junto con la suma binaria de los números 1101 y 11001:




En la suma decimal, para sumar 25 y 13 en la forma en la que estamos acostumbrados, acumulando la respuesta de derecha a izquierda, primero decimos "5 más 3 es igual a 8". En este caso, como la suma parcial no excede de 10, no "llevamos" una unidad para ser sumada a las decenas. El siguiente dígito lo obtenemos diciendo "2 más 1 es igual a 3". Con esto, tenemos el resultado mostrado arriba, que es 38. Veamos ahora cómo se llevó a cabo la suma binaria. Para llevar a cabo la suma binaria, procedemos exactamente de la misma manera, empezando de izquierda a derecha decimos "uno más uno es igual a 10" (recuérdese que en el sistema binario, no existe un símbolo para representar el número 2). Anotamos el cero abajo (puesto en color amarillo) y decimos "anotamos cero y llevamos uno". En la siguiente columna de dígitos, procediendo de izquierda a derecha al igual que como lo hacemos en el sistema decimal, decimos "cero más cero es igual a cero, más el uno que llevábamos es igual a uno". Anotamos este uno a la izquierda del cero que habíamos escrito antes, con lo cual tenemos ya un resultado cumulativo de "10" en color amarillo, procediendo a la siguiente columna de dígitos en donde decimos: "cero más uno es igual a uno, y como no traíamos nada de la adición anterior, anotamos éste uno". Tenemos ya una respuesta cumulativa de "110". Nos vamos a la siguiente columna de dígitos en donde decimos: "uno más uno es igual a 10, y como no traíamos nada de la adición anterior, anotamos cero y llevamos uno". Nuestra respuesta cumulativa lee ya "0110". Así llegamos a la última columna a la izquierda, en donde tenemos únicamente el "1" con el cual decimos "tenemos uno, más el uno que traíamos de la adición anterior, es igual a 10, y como ya no hay más dígitos para sumar, anotamos este 10 para concluír la adición binaria". De este modo, el resultado de la suma binaria es igual al número binario:

100110

Con el fin de checar nuestra respuesta, el equivalente decimal de este número de acuerdo con la tabla de potencias de 2 resulta ser:

1001102 = (1)25 + (0)24 + (0)23 + (1)22 + (1)21 + (0)20

1001102 = 32 +0 + 0 + 4 + 2 + 0

1001102 = 3810

PROBLEMA: Sumar los cuatro números binarios cuyas representaciones hexadecimales son 25h, 62h, 3Fh y 52h.

Los cuatro números hexadecimales, convertidos a la representación binaria, son:

25h = 0010 0101

62h = 0110 0010

3Fh = 0011 1111

52h = 0101 0010

La suma de estos cuatro números se muestra a continuación:


El resultado de la suma, 100011000, se puede representar tambié como su equivalente hexadecimal 118h.

PROBLEMA: Multiplicar los números 13 y 25 convirtiendo cada uno a simbolismo binario, multiplicando las cifras binarias obtenidas, y llevando a cabo la conversión del resultado obtenido a simbolismo decimal.

Los equivalentes binarios de los números decimales 13 y 25 ya fueron obtenidos en el problema anterior, resultando ser 1101 y 11001. Con esto, podemos llevar a cabo la multiplicación en forma similar a como se lleva a cabo en el sistema decimal al cual estamos acostumbrados:


Obsérvese que llevar a cabo una multiplicación binaria pura es mucho más fácil de lo que parece ser a primera vista, ya que en realidad sólo se requiere estar llevando a cabo adiciones sucesivas del multiplicando de acuerdo con el valor que tenga cada uno de los dígitos binarios del número que sea escogido como multiplicador. Si aumentamos la capacidad de bits, podemos estar llevando a cabo multiplicaciones de números realmente grandes sin mayor inversión intelectual que la que ya hemos hecho, y esta multiplicación se llevará a cabo a una rapidez electrónica. ¡No en vano desde hace más de un siglo los inventores humanos se esforzaron por crear máquinas que pudieran llevar a cabo este tipo de operaciones aritméticas a velocidades admirables!

Puesto que el producto de los números decimales 13 y 25 es el número 325, podemos checar nuestra respuesta convirtiendo el número binario obtenido a su equivalente decimal, el cual debe ser también 325. El procedimiento para ello se muestra a continuación:

1010001012 = (1)28 + (0)27 + (1)26 + (0)25 + (0)24 + (0)23 + (1)22 + (0)21 + (1)20

1010001012 = 256 + 64 + 0 + 0 + 0 + 0 + 4 + 0 + 1

1010001012 = 32510

PROBLEMA: Representar en el sistema BCD los siguientes números:
A) 50123
B) 37
C) 4856
D) 102
E) 3971
F) 74
G) 95437
La representación en el sistema BCD de los números indicados se muestra a continuación:



PROBLEMA
: Una microcomputadora tiene una capacidad de 16 bits. ¿Cuál es el número más grande que se puede representar bajo esta capacidad en la misma:
A) usando el sistema binario, y
B) usando el sistema BCD? Comparar la diferencia entre ambos casos.

A) Usando el sistema binario, el número más grande que se puede representar con 16 bits es:

1111111111111111

Este número binario equivale al número decimal:

216 - 1 = 65,536 -1

= 65,535

B) Usando el sistema BCD, el número más grande que se puede representar con 16 bits es:

1001__1001__1001__1001

9_____9_____9_____9

o sea, el número 9,999.

Al usar el sistema BCD en lugar del sistema binario, tenemos una diferencia de 65,535-9,999 = 55,536. En otros tiempos en los que los costos para representar cada dígito se medía en términos de bulbos electrónicos y relevadores electromecánicos en lugar de las decenas de miles de transistores microminiaturizados que tenemos en la actualidad, esto se consideraba una pérdida lastimosa de capacidad. De cualquier modo, en nuestros tiempos existen muchas situaciones en las cuales el uso del sistema BCD es una necesidad para proporcionar información más "humana" que sea entendible para la gente ordinaria, ya sea en los relojes digitales, en las carátulas digitales en los hornos de microondas, y en los multímetros digitales que usan los técnicos para medir voltajes y corrientes eléctricas. En estas situaciones, el uso de información binaria pura sería casi indescifrable para los humanos, aunque sea el "lenguaje natural" de la electrónica digital.

PROBLEMA: Convertir el número binario .10101 a su equivalente en sistema decimal.

Usando la tabla de equivalencias descrita en el texto, tenemos que:

.10101 = .10000 + .00100 + .00001

.10101 = 1/2 + 1/8 + 1/32

.10101 = .5 + 125 + .03125

.101012 = .6562510

Pero podemos obtener el mismo resultado de la otra manera alterna, la cual consiste en expresar el número binario como una fracción de dos binarios enteros tras lo cual convertimos tanto el numerador como el denominador a su equivalente decimal para así llevar a cabo finalmente la división:

.10101 = 10101/100000

.10101 = (10000 + 100 + 1)/100000

.10101 = (16 + 4 + 1)/32

.10101 = 21/32

.101012 = .6562510

confirmando así el resultado obtenido previamente.

PROBLEMA: Convertir el número 110.011 del sistema binario al sistema decimal.

Para convertir este número binario "mixto" que tiene una parte entera y una parte fraccional, basta con darle a cada "1" binario el valor que le corresponde:

110.011 = 100 + 10 + .01 + .001

110.011 = 4 + 2 + 1/10 + 1/100

110.011 = 4 + 2 + 1/4 + 1/8

110.011 = 6 + .25 + .125

110.0112 = 6.37510

En la forma alterna de solución, expresamos el número como una fracción de dos binarios enteros tras lo cual convertimos tanto el numerador como el denominador a su equivalente decimal llevando a cabo la división:

110.011 = 110011/1000 = (100000 + 10000 + 10 + 11)/1000

110011 = (32 +16 + 2 + 1)/8

110011 = 51/8

1100112 = 6.37510

confirmando así el resultado obtenido previamente.

PROBLEMA: Convertir las siguientes fracciones binarias a su equivalente decimal, expresando los resultados como números racionales (el cociente de dos números enteros):

a) .011
b) .111
c) .1001
d) .1101
e) .10001
f) .11001

a) Usando la tabla de equivalencias, y procediendo de la misma forma en todos los casos:

.011 = .01 + .001 = 1/4 + 1/8 = 2/8 + 1/8 = 3/8

b)
.111 = .1 + .01 + .001 = 1/2 + 1/4 + 1/8 = 4/8 + 2/8 + 1/8 = 7/8

c)
.1001 = .1 + .0001 = 1/2 + 1/16 = 8/16 + 1/16 = 9/16

d)
.1101 = .1 + .01 + .0001 = 1/2 + 1/4 + 1/16 = 8/16 + 4/16 + 1/16 = 13/16

e)
.10001 = .1 + .00001 = 1/2 + 1/32 = 16/32 + 1/32 = 17/32

f)
.11001 = .1 + .01 + .00001 = 1/2 + 1/4 + 1/32 = 16/32 + 8/32 + 1/32 = 25/32

PROBLEMA: Representar los siguientes números decimales en su equivalente binario, redondeando en donde sea necesario a tres cifras significativas.

a) 2/3
b) 1/5
c) 15/16

a) Primero llevamos a cabo la división para convertir el número expresado en forma de quebrado a su forma decimal:

2/3 = .6666666666...

A continuación redondeamos este resultado a tres cifras significativas:

2/3 = .667

Para encontrar el equivalente binario de esta fracción decimal, podemos llevar a cabo una secuencia de substracciones sucesivas consultando la tabla de equivalencias, lo cual nos produce la siguiente serie de pasos:

.667 - .5 = .167 (Un dígito del equivalente binario será .5 = 1/2 = .10000)

.167 - .125 = .042 (Un dígito del equivalente binario será .125 = .00100)

.042 - .03125 = .01075 (Un dígito del equivalente binario será .03125 = .00001)

Analicemos bien lo que se acaba de realizar: consultando la tabla de equivalencias encontramos que el número decimal fraccionario que se corresponde directamente con un equivalente binario exacto que sea el más grande de todos ellos sin exceder al número decimal .667 es el número .5 que equivale al .1 binario. Anotando esto como resultado parcial y tras llevar a cabo la resta del número decimal .5 del número .667, nos queda el número .167, con lo cual consultamos de nuevo la tabla de equivalencias para encontrar el número decimal fraccionario que se corresponde directamente con un equivalente binario exacto que sea el más grande de todos ellos sin exceder al número decimal .167, que resulta ser el número .125 que equivale al .001 binario, anotando esto como resultado parcial. La respuesta estará dada por la suma de los resultados parciales. Este proceso puede ser repetido mecánicamente cuantas veces queramos, aproximando cada vez con mayor precisión al número decimal fraccionario original.

Así, la respuesta (aproximada) es:

.10000 + .00100 + .00001 = .10101

b) 1/5 = .20

.2 - .125 = .075 (Un dígito del equivalente binario será .125 = .00100)

.075 - .0625 = .0125 (Un dígito del equivalente binario será .00010)

Puesto que .03125 excede a .0125, no podemos restarlo de .0125, con lo cual sabemos que el siguiente dígito significativo en el acumulamiento de los resultados parciales deberá ser un "0". Entonces la respuesta (aproximada) debe ser:

.00100 + .00010 + .00000 = .00110

c) 15/16 = .938 (redondeado a tres cifras significativas)

.938 - .5 = .438 (Un dígito del equivalente binario será .5 = 1/2 = .10000)

.438 - .25 = .188 (Un dígito del equivalente binario será .25 = .01000)

.188 - .125 = .063 (Un dígito del equivalente binario será .125 = .00100)

.063 - .0625 = .0005 (Un dígito del equivalente binario será .0625 = .00010)

La respuesta aproximada es entonces:

.100000 + .01000 + .00100 + .00010 = .11110

PROBLEMA: Convertir los siguientes símbolos binarios a su representación octal.

a) 10110
b) 11110
c) 11011
d) 110011
e) 111000
f) 100011
g) 11110000
h) 11001100
i) 10101010

El procedimiento de solución es directo, consistente en separar los números binarios en grupos de tres haciéndolo de derecha a izquierda:

a) 10110 = 10 110 = 26
b) 11110 = 11 110 = 36
c) 11011 = 11 011 = 33
d) 110011 = 110 011 = 63
e) 111000 = 111 000 = 70
f) 100011 = 100 011 = 43
g) 11110000 = 11 110 000 = 360
h) 11001100 = 11 001 100 = 314
i) 10101010 = 10 101 010 = 252

PROBLEMA: Multiplicar los números octales 56 y 45, sin salir para nada del sistema octal.

Para poder llevar a cabo la multiplicación en el sistema octal, en el cual no existe un símbolo para nuestro número "8", resulta conveniente construír una "tabla de multiplicación" octal, la cual se puede construír fácilmente listando en conteo ascendente todos los números octales desde el uno en adelante, y tras ello ir saltando en dicha lista de dos en dos una vez, de dos en dos tres veces, de dos en dos cuatro veces, de dos en dos cinco veces, y así sucesivamente; y tras esto de tres en tres una vez, de tres en tres dos veces, de tres en tres tres veces, de tres en tres cuatro veces, y así sucesivamente, para ir llenando los casilleros de la tabla de multiplicación de dos por dos, dos por tres, dos por cuatro, etc., tres por dos, tres por tres, tres por cuatro, etc., y así sucesivamente, hasta tener la tabla completa, la cual resulta ser:


Con la tabla de multiplicación octal a la mano, y teniendo siempre en mente la manera en la cual se debe llevar a cabo una suma octal, tomando el número menor (45) como el multiplicador y el número mayor (56) como el multiplicando tal y como se acostumbra en la multiplicación usual, el procedimiento de la operación es el siguiente:



PROBLEMA: Convertir los siguientes números hexadecimales a sus equivalentes en sistema octal.

a) 3A7h
b) 41FBh
c) 7C2Eh
d) D589Ah
e) B0Ce5h
f) 6FF23h

Posiblemente la forma más rápida de llevar a cabo la conversión consiste en convertir directamente cada número hexadecimal a su equivalente binario (base-2) y tras esto reagrupar los dígitos binarios en grupos de tres en tres (de derecha a izquierda) llevando a cabo tras esto la conversión de cada grupo a sistema octal.

a) 3A7h = 0011 1010 01112 = 001 110 100 111 = 16478

b) 41FBh = 0100 0001 1111 10112 = 0 100 000 111 111 011 = 407738

c) 7C2Eh = 0111 1100 0010 11102 = 0 111 110 000 101 110 = 760568

d) D589Ah = 1101 0101 1000 1001 10102 = 11 010 101 100 010 011 010 = 32542328

e) B0CE5h = 1011 0000 1100 1110 01012 = 10 110 000 110 011 100 101 = 26063458

f) 6FF23h = 0110 1111 1111 0010 00112 = 01 101 111 111 100 100 011 = 15774438