SUMADOR - RESTADOR BINARIO UN PROYECTO DIDACTICO Realizar operaciones aritméticas es una de las funciones primordiales de las calculadoras electrónicas, por lo que en esta ocasión observamos la forma de utilizar un mismo circuito digital para obtener el resultado de una suma o de una resta. El proyecto que presentamos a continuación puede ser utilizado para "aprender" a manejar las técnicas digitales y sirve como base para otros proyectos más elaborados. INTRODUCCION Las sumas no implican mayor problema, ya que los sistemas electrónicos operan de la misma manera que un ser humano, por ejemplo para sumar los números (decimales) de un solo dígito, 8 y 4 se tendrá como resultado un 2 y como acarreo un 1, para formar el resultado cuyo valor es el 12. Para la operación de las restas, todos estamos acostumbrados desde los estudios primarios a utilizar el concepto de “préstamo”, el cual en los sistemas electrónicos es muy difícil llevarlo a cabo, por lo que la operación aritmética de la resta se implanta mediante un método algo más complicado para el razonamiento y consiste en realizar un complemento al sustraendo para posteriormente utilizar la operación de la suma como estamos habitualmente a realizarla, y de esta manera obtener el resultado de la resta (si Ud. no sabe cómo se resta en sistema binario, le aconsejamos leer bibliografía apropiada). EL COMPLEMENTO DE UN NUMERO El complemento es empleado básicamente en los microprocesadores de las computadoras con el fin de simplificar tanto las operaciones de sustracción, así como también en ciertas manipulaciones lógicas que de los valores numéricos tienen que hacerse, debe tomarse en cuenta que para cada sistema de base “n” existe tan solo dos tipos de complemento: Complemento de n Complemento de (n-1) De lo dicho anteriormente y si consideramos la base numérica que empleamos de manera natural (base 10), se tienen los complementos de 10 y 9 para números decimales, mientras que para una base binaria (base 2) los complementos serán de 2 y 1. Partiendo del conocimiento que para realizar operaciones en los sistemas digitales los números deben estar expresados en base binaria, es oportuno mencionar que se emplea el complemento a 2 por ser éste el que menos complicaciones presenta. Para realizar un complemento a 2 de un número en base binaria, matemáticamente se expresa como: donde: a = Número de bits del valor binario. n = Base binaria (2). b = Número binario a complementar Así por ejemplo para encontrar el complemento a 2 de 1010(2), se tiene lo siguiente: Luego el complemento a dos será: Otro método más sencillo para complementar a 2 un número binario es reemplazar los 1 por los 0 y los 0 por los 1, y por último sumar un 1, por ejemplo, para el mismo número binario anterior el complemento a dos será: A este valor numérico se le suma un 1 quedando el complemento a 2 como sigue: Una vez que sabemos qué es un complemento y cómo se realiza, pasemos a revisar cuál es el algoritmo a seguirse para una sustracción con complemento a 2 de números binarios. Dada una resta como la siguiente: 1) Debemos obtener el complemento a 2 del Sustraendo. 2) Hay que sumar el Minuendo con el valor del Sustraendo complementado a 2. 3) Se debe verificar el resultado del paso (2) y de acuerdo con el acarreo final tome una de las siguientes decisiones. 3.1 - Si se presenta un acarreo final, descártelo y tome el valor de la operación como el residuo de la resta. 3.2 - Si no se presenta un acarreo final, tome el complemento a 2 del valor resultante de la operación como el residuo de la resta y agrégele un signo negativo. Por ejemplo, restar los valores: Para saber cómo se hace, vea la tabla 1: Siguiendo el algoritmo anterior, se tiene un acarreo al final, por lo que el resultado de la resta es: EL CIRCUITO PROPUESTO En la figura 1 se puede observar el circuito propuesto para nuestro proyecto. Para realizar las operaciones aritméticas de suma y resta de dos números de 4 bits por medio de un circuito electrónico, se utiliza un dipswitch para fijar los valores correspondientes de los operandos 1 y 2 (operando 1 = minuendo bits A1-A4, operando 2 = sustraendo B1-B4). Los 4 bits correspondientes al operando 1 se hacen llegar de manera directa a un sumador completo (74LS83) cuya identificación es IC3, mientras que los 4 bits que conforman al operando 2 primero se hacen pasar por una compuerta OR-exclusiva (IC1, 74LS86) cada uno de ellos, la función que tiene el circuito IC1 es la de cambiar los 0 por los 1 y los 1 por los 0 en caso de que se tenga que hacer una resta, o dejar pasar el valor del operando 2 tal cual en caso de una suma. El medio para escoger la operación aritmética ya sea de la suma o la resta de los operandos 1 y 2, es por la interacción del bit de control, el cual tiene que fijarse en 0 lógico para que se realice una suma entre los operandos 1 y 2, por otra parte si el bit de control se ubica en la posición de 1 lógico, el ejercicio resultante entre los operandos 1 y 2 será la de una resta. Una vez que las compuertas del circuito IC1 entregan un resultado, éste se hace llegar a otro sumador completo (IC2, 74LS83), en donde si el bit de control se encuentra en 1 lógico se complementa a 2 el operando 2 (sustraendo), ya que se le sumará un 1 al valor que entreguen las compuertas OR-exclusiva (recuerde que previamente estas compuertas cambiaron los 1 por los 0 y los 0 por los 1), y por último el resultado del complemento a 2 se hace llegar al sumador completo del circuito IC3 para que se realice la suma del operando 1 (minuendo) y operando 2 complementado a 2 (sustraendo). Por otra parte si el bit de control se encuentra en 0 lógico (operación de suma) el valor de los bits del operando 2 no sufren alteración alguna por lo que a los bits entregados por las compuertas OR-exclusiva se le sumará un valor de 0 en el circuito IC2, pasando a realizar una suma normal de los operandos 1 y 2 por medio del circuito IC3. En la figura 2 se muestra la placa de circuito impreso, la cual posee varios puentes en la parte superior, con el objeto no emplear una placa doble faz o tener que realizar un diseño más complejo. Por último, en la figura 3 se puede apreciar una vista del prototipo montado sobre un experimentador digital. Las computadoras digitales realizan una variedad de tareas de procesamiento de información. Entre las funciones básicas encontradas están las diversas funciones aritméticas. Sin duda, la operación aritmética más básica es la adición de dos dígitos binarios. Esta adición simple consta de cuatro operaciones elementales posibles, a saber, 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1 y 1 + 1 = 10. Las primeras tres operaciones producen una suma cuya longitud es un dígito, pero cuando tanto los bits sumando como adendo son iguales a 1, la suma binaria consta de dos dígitos. El bit significativo más alto de este resultado se denomina acarreo. Un circuito combinacional que lleva a cabo la adición de dos bits se denomina medio sumador. Uno que lleva a cabo la adición de tres bits (dos bits significativos y una cuenta que se lleva a previo) es un sumador completo. La suma binaria para números de un bit es la siguiente : Pero cuando tengo números binarios formados por más de un bit, al operar aparece el acarreo ( carry ) CIRCUITO SEMISUMADOR De la explicación verbal de medio sumador, se encuentra que este circuito necesita dos entradas binarias y dos salidas binarias. Las variables de entrada designan los bits sumando y adendo; las variables de salida producen la suma y el acarreo. Es necesario especificar dos variables de salida debido a que el resultado puede constar de dos dígitos binarios. Se asignan de forma arbitraria los símbolos x y y y a las dos entradas y S (de suma) y C (para el acarreo) a las salidas. Ahora que se han establecido el número y nombre de las variables de entrada y salida, ya puede formularse una tabla de verdad para identificar en forma exacta la función del medio sumador. Esta tabla de verdad se muestra a continuación: x 0 0 1 1 y|cs 0|00 1|01 0|01 1|10 El acarreo de salida es 0 a menos que ambas entradas sean 1. La salida S representa el bit menos significativo de la suma. La función booleana simplificada de las dos salidas puede obtenerse de manera directa mediante la tabla de verdad. Las expresiones simplificadas en suma de productos son: S = s´y + xy´ C = xy El diagrama lógico para esta implementación se muestra en la Figura 4-2(a), lo mismo que otras cuatro implementaciones para un medio sumador. Todos logran el mismo resultado en lo que respecta al comportamiento de entrada-salida. Ilustran la flexibilidad de la que dispone el diseñador cuando implementa incluso una función lógica combinacional simple como ésta. Como se mencionó antes, la Fig.4-2(a) es la implementación del medio sumador en suma de productos. En la Figura 42(b) se muestra la implementación en productos de sumas: S = (x + y) (x´ + y´) C= xy Para obtener la implementación de la Fig. 4-2(c), se observa que S es la OR excluyente de x y y. El complemento de S es la equivalencia de x y y : S’ = xy + x’y’ Pero C = xy y, por lo tanto, tenemos: S = (C + x’y’)’ Se utiliza la implementación de producto de sumas C derivada como sigue: C = xy = (x’ + y’)’ Si realizamos el semisumador para dos números A y B de un bit nos queda: Realizando su implementación mediante puertas queda: Se le denomina normalmente HA de half-adder. El circuito topológico del semisumador es el siguiente: CIRCUITO SUMADOR COMPLETO Un sumador completo es un circuito combinacional que formar la suma aritmética de tres bits de entrada. Consta de tres entradas y dos salidas. Dos de las variables de entrada, que se indican por x y y, representan los dos bits significativo que van a añadirse. La tercera entrada, z, representa la cuenta que se lleva de la posición previa significativa más baja. Son necesarias dos salidas debido a que la suma aritmética de tres dígitos binarios varía en valor de 0 a 3 y el 2 o 3 binarios requieren 2 dígito. Las dos salidas se denotan por los símbolos S para la suma y C para la cuenta que se lleva. La variable S da el valor del bit menos significativo de la suma. La variable binaria C da la cuenta que se lleva de salida. La tabla de verdad del sumador completo es como sigue: x 0 0 0 0 1 1 1 1 yz|cs 00|00 01|01 10|01 11|10 00|01 01|10 10|10 11|11 La relación lógica de entrada-salida del circuito sumador completo puede expresarse en dos funciones booleanas, una para cada variable de salida. Cada función booleana de salida requiere un mapa único para su simplificación. Cada mapa debe de tener ocho cuadros, ya que cada salida es una función de tres variables de entrada. Los 1 en los cuadros de los mapas de S y C se determinan en forma directa mediante la tabla de verdad. Los cuadros con 1 para la salida S no se combinan en cuadros adyacentes para dar una expresión simplificada en suma de productos. La salida C puede simplificarse a una expresión de 6 literales. El diagrama lógico para el sumador completo implementando en suma de productos se muestra en la Figura 4-4. En esta implementación se usan las expresiones booleanas siguientes: S = x’y’z + x’yz’ + xy’z’ + xyz C = xy + xz + yz Si implementamos mediante puertas: Diseño de un sumador completo a partir de dos semisumadores. El sumador completo Un sumador completo como el que se muestra en la figura es un circuito digital capaz de realizar la suma aritmética de dos dígitos binarios además de un posible acarreo de entrada, este último es particularmente útil cuando se diseña en forma modular un sumador de dos números de ´n´ bits. Las señales marcadas con a, b Cin son las entradas del sumador y corresponden a los dos dígitos a sumar y el posible acarreo de entrada respectivamente. Las señales marcadas con Co y S sol las salidas del sumador y forman el resultado de la suma y el acarreo de salida (si es que lo hay) respectivamente. Así si en las entradas colocamos tres señales x, y , z con valores respectivos de 101 el sumador realizara la suma de 1+0+1 en forma binaria dando como resultado el número 10 binario del tal forma que las señales asignadas a las funciones C y S tomarían los valores de 1 y 0 respectivamente. Circuito del sumador total Un sumador completo es un circuito combinacional que formar la suma aritmética de tres bits de entrada. Consta de tres entradas y dos salidas. Dos de las variables de entrada que se indican por x y, y se presentan los dos bits significativos que van a añadirse. La tercera entrada z, representa la cuenta de la posición previa significativa mas baja. Son necesarias dos salidas debido a que la suma aritmética de tres dígitos binarios varia en valor desde 0 a 3 y el 2 o 3 binarios requieren dos dígitos. Las dos salidas se denotan por símbolos S para suma y C para la cuenta que se lleva. La variable binaria S da el valor del bit menos significativo de la suma La variable binaria C da la cuenta que se lleva de salida. Sistema binario De Wikipedia, la enciclopedia libre Saltar a navegación, búsqueda Para otros usos de este término, véase Sistema binario (astronomía). El sistema binario, en matemáticas e informática, es un sistema de numeración en el que los números se representan utilizando solamente las cifras cero y uno (0 y 1). Es el que se utiliza en las computadoras, debido a que trabajan internamente con dos niveles de voltaje, por lo que su sistema de numeración natural es el sistema binario (encendido 1, apagado 0). Contenido 1 Historia del sistema binario o 1.1 Aplicaciones 2 Representación 3 Conversión entre binario y decimal o 3.1 Decimal a binario o 3.2 Decimal (con decimales) a binario o 3.3 Binario a decimal o 3.4 Binario a decimal (con parte fraccionaria binaria) 4 Operaciones con números binarios o 4.1 Suma de números binarios o 4.2 Resta de números binarios o 4.3 Producto de números binarios o 4.4 División de números binarios 5 Conversión entre sistema binario y octal o 5.1 Sistema Binario a octal o 5.2 Octal a binario 6 Conversión entre binario y hexadecimal o 6.1 Binario a hexadecimal o 6.2 Hexadecimal a binario 7 Tabla de conversión entre decimal, binario, hexadecimal, octal, BCD, Exceso 3 y Código Gray o Reflejado 8 Factorialización 9 Véase también 10 Enlaces externos Historia del sistema binario El antiguo matemático indio Pingala presentó la primera descripción que se conoce de un sistema de numeración binario en el siglo III a. C. Una serie completa de 8 trigramas y 64 hexagramas (análogos a 3 bit) y números binarios de 6 bit eran conocidos en la antigua China en el texto clásico del I Ching. Series similares de combinaciones binarias también han sido utilizadas en sistemas de adivinación tradicionales africanos, como el Ifá, así como en la geomancia medieval occidental. Un arreglo binario ordenado de los hexagramas del I Ching, representando la secuencia decimal de 0 a 63, y un método para generar el mismo fue desarrollado por el erudito y filósofo Chino Shao Yong en el siglo XI. En 1605 Francis Bacon habló de un sistema por el cual las letras del alfabeto podrían reducirse a secuencias de dígitos binarios, las cuales podrían ser codificadas como variaciones apenas visibles en la fuente de cualquier texto arbitrario. El sistema binario moderno fue documentado en su totalidad por Leibniz, en el siglo XVII, en su artículo "Explication de l'Arithmétique Binaire". En él se mencionan los símbolos binarios usados por matemáticos chinos. Leibniz utilizó el 0 y el 1, al igual que el sistema de numeración binario actual. En 1854, el matemático británico George Boole publicó un artículo que marcó un antes y un después, detallando un sistema de lógica que terminaría denominándose Álgebra de Boole. Dicho sistema desempeñaría un papel fundamental en el desarrollo del sistema binario actual, particularmente en el desarrollo de circuitos electrónicos. Aplicaciones En 1937, Claude Shannon realizó su tesis doctoral en el MIT, en la cual implementaba el Álgebra de Boole y aritmética binaria utilizando relés y conmutadores por primera vez en la historia. Titulada Un Análisis Simbólico de Circuitos Conmutadores y Relés, la tesis de Shannon básicamente fundó el diseño práctico de circuitos digitales. En noviembre de 1937, George Stibitz, trabajando por aquel entonces en los Laboratorios Bell, construyó una computadora basada en relés —a la cual apodó "Modelo K" (porque la construyó en una cocina, en inglés "kitchen")— que utilizaba la suma binaria para realizar los cálculos. Los Laboratorios Bell autorizaron un completo programa de investigación a finales de 1938, con Stibitz al mando. El 8 de enero de 1940 terminaron el diseño de una "Calculadora de Números Complejos", la cual era capaz de realizar cálculos con números complejos. En una demostración en la conferencia de la Sociedad Americana de Matemáticas, el 11 de septiembre de 1940, Stibitz logró enviar comandos de manera remota a la Calculadora de Números Complejos a través de la línea telefónica mediante un teletipo. Fue la primera máquina computadora utilizada de manera remota a través de la línea de teléfono. Algunos participantes de la conferencia que presenciaron la demostración fueron John Von Neumann, John Mauchly y Norbert Wiener, quien escribió acerca de dicho suceso en sus diferentes tipos de memorias en la cual alcanzó diferentes logros. Representación Un número binario puede ser representado por cualquier secuencia de bits (dígitos binarios), que suelen representar cualquier mecanismo capaz de estar en dos estados mutuamente excluyentes. Las siguientes secuencias de símbolos podrían ser interpretadas como el mismo valor numérico binario: 1 | x y 0 o n 1 | x y 0 o n 0 o n 1 | x y 1 | x y 0 o n 1 | x y 0 o n El valor numérico representado en cada caso depende del valor asignado a cada símbolo. En una computadora, los valores numéricos pueden representar dos voltajes diferentes; también pueden indicar polaridades magnéticas sobre un disco magnético. Un "positivo", "sí", o "sobre el estado" no es necesariamente el equivalente al valor numérico de uno; esto depende de la nomenclatura usada. De acuerdo con la representación más habitual, que es usando números árabes, los números binarios comúnmente son escritos usando los símbolos 0 y 1. Los números binarios se escriben a menudo con subíndices, prefijos o sufijos para indicar su base. Las notaciones siguientes son equivalentes: 100101 binario (declaración explícita de formato) 100101b (un sufijo que indica formato binario) 100101B (un sufijo que indica formato binario) bin 100101 (un prefijo que indica formato binario) 1001012 (un subíndice que indica base 2 (binaria) notación) %100101 (un prefijo que indica formato binario) 0b100101 (un prefijo que indica formato binario, común en lenguajes de programación) Conversión entre binario y decimal Decimal a binario Se divide el número del sistema decimal entre 2, cuyo resultado entero se vuelve a dividir entre 2, y así sucesivamente. Ordenados los restos, del último al primero, éste será el número binario que buscamos. Ejemplo Transformar el número decimal 131 en binario. El método es muy simple: 131 65 32 16 8 4 2 1 dividido dividido dividido dividido dividido dividido dividido dividido entre 2 da 65 y el resto entre 2 da 32 y el resto entre 2 da 16 y el resto entre 2 da 8 y el resto entre 2 da 4 y el resto entre 2 da 2 y el resto entre 2 da 1 y el resto entre 2 da 0 y el resto -> Ordenamos los restos, es igual a es igual a es igual a es igual a es igual a es igual a es igual a es igual a del último 1 1 0 0 0 0 0 1 al primero: 10000011 En sistema binario, 131 se escribe 10000011 Ejemplo Transformar el número decimal 100 en binario. Otra forma de conversión consiste en un método parecido a la factorización en números primos. Es relativamente fácil dividir cualquier número entre 2. Este método consiste también en divisiones sucesivas. Dependiendo de si el número es par o impar, colocaremos un cero o un uno en la columna de la derecha. Si es impar, le restaremos uno y seguiremos dividiendo entre dos, hasta llegar a 1. Después sólo nos queda tomar el último resultado de la columna izquierda (que siempre será 1) y todos los de la columna de la derecha y ordenar los dígitos de abajo a arriba. Ejemplo 100|0 50|0 25|1 12|0 6|0 3|1 1|1 --> 1, 25-1=24 y seguimos dividiendo por 2 --> (100)10 = (1100100)2 Existe un último método denominado de distribución. Consiste en distribuir los unos necesarios entre las potencias sucesivas de 2 de modo que su suma resulte ser el número decimal a convertir. Sea por ejemplo el número 151, para el que se necesitarán las 8 primeras potencias de 2, ya que la siguiente, 28=256, es superior al número a convertir. Se comienza poniendo un 1 en 128, por lo que aún faltarán 23, 151-128 = 23, para llegar al 151. Este valor se conseguirá distribuyendo unos entre las potencias cuya suma dé el resultado buscado y poniendo ceros en el resto. En el ejemplo resultan ser las potencias 4, 2, 1 y 0, esto es, 16, 4, 2 y 1, respectivamente. Ejemplo 20= 1|1 21= 2|1 22= 4|1 23= 8|0 24= 16|1 25= 32|0 26= 64|0 27= 128|1 128 + 16 + 4 + 2 + 1 = (151)10 = (10010111)2 Decimal (con decimales) a binario Para transformar un número del sistema decimal al sistema binario: 1. Se transforma la parte entera a binario. (Si la parte entera es 0 en binario será 0, si la parte entera es 1 en binario será 1, si la parte entera es 5 en binario será 101 y así sucesivamente). 2. Se sigue con la parte fraccionaria, multiplicando cada número por 2. Si el resultado obtenido es mayor o igual a 1 se anota como un uno (1) binario. Si es menor que 1 se anota como un 0 binario. (Por ejemplo, al multiplicar 0.6 por 2 obtenemos como resultado 1.2 lo cual indica que nuestro resultado es un uno (1) en binario, solo se toma la parte entera del resultado). 3. Después de realizar cada multiplicación, se colocan los números obtenidos en el orden de su obtención. 4. Algunos números se transforman en dígitos periódicos, por ejemplo: el 0.1. Ejemplo 0,3125 (decimal) Proceso: 0,3125 · 2 = 0,625 0,625 · 2 = 1,25 0,25 · 2 = 0,5 0,5 · 2 = 1 En orden: 0101 => 0,0101 (binario). => => => => -> 0 1 0 1 0,0101 (binario) Ejemplo 0,1 (decimal) => 0,0 0011 0011 ... (binario). Proceso: 0,1 · 2 = 0,2 ==> 0 0,2 · 2 = 0,4 ==> 0 0,4 · 2 = 0,8 ==> 0 0,8 · 2 = 1,6 ==> 1 0,6 · 2 = 1,2 ==> 1 0,2 · 2 = 0,4 ==> 0 <--se repiten las cuatro cifras, periódicamente 0,4 · 2 = 0,8 ==> 0 <0,8 · 2 = 1,6 ==> 1 <0,6 · 2 = 1,2 ==> 1 <- ... En orden: 0 0011 0011 ... => 0,0 0011 0011 ... (binario periódico) Ejemplo 5.5 = 5,5 5,5 (decimal) => 101,1 (binario). Proceso: 5 => 101 0,5 · 2 = 1 => 1 En orden: 1 (un sólo dígito fraccionario) -> 101,1 (binario) Ejemplo 6,83 (decimal) => 110,110101000111 (binario). Proceso: 6 => 110 0,83 · 2 = 1,66 => 1 0,66 · 2 = 1,32 => 1 0,32 · 2 = 0,64 => 0 0,64 · 2 = 1,28 => 1 0,28 · 2 = 0,56 => 0 0,56 · 2 = 1,12 => 1 0,12 · 2 = 0,24 => 0 0,24 · 2 = 0,48 => 0 0,48 · 2 = 0,96 => 0 0,96 · 2 = 1,92 => 1 0,92 · 2 = 1,84 => 1 0,84 · 2 = 1,68 => 1 En orden: 110101000111 (binario) Parte entera: 110 (binario) Encadenando parte entera y fraccionaria: 110,110101000111 (binario) Binario a decimal Para realizar la conversión de binario a decimal, realice lo siguiente: 1. Inicie por el lado derecho del número en binario, cada cifra multiplíquela por 2 elevado a la potencia consecutiva (comenzando por la potencia 0, 20). 2. Después de realizar cada una de las multiplicaciones, sume todas y el número resultante será el equivalente al sistema decimal. Ejemplos: (Los números de arriba indican la potencia a la que hay que elevar 2) También se puede optar por utilizar los valores que presenta cada posición del número binario a ser transformado, comenzando de derecha a izquierda, y sumando los valores de las posiciones que tienen un 1. Ejemplo El número binario 1010010 corresponde en decimal al 82. Se puede representar de la siguiente manera: entonces se suman los números 64, 16 y 2: Para cambiar de binario con decimales a decimal se hace exactamente igual, salvo que la posición cero (en la que el dos es elevado a la cero) es la que está a la izquierda de la coma y se cuenta hacia la derecha a partir de -1: Binario a decimal (con parte fraccionaria binaria) 1. Inicie por el lado izquierdo (la primera cifra a la derecha de la coma), cada número multiplíquelo por 2 elevado a la potencia consecutiva a la inversa (comenzando por la potencia -1, 2-1). 2.Después de realizar cada una de las multiplicaciones, sume todas y el número resultante será el equivalente al sistema decimal. Ejemplos 0,101001 (binario) = 0,640625(decimal). Proceso: 1 · 2 elevado a -1 = 0 · 2 elevado a -2 = 1 · 2 elevado a -3 = 0 · 2 elevado a -4 = 0 · 2 elevado a -5 = 1 · 2 elevado a -6 = La suma es: 0,640625 0,5 0 0,125 0 0 0,015625 0.110111 (binario) = 0,859375(decimal). Proceso: 1 · 2 elevado a -1 = 1 · 2 elevado a -2 = 0 · 2 elevado a -3 = 1 · 2 elevado a -4 = 1 · 2 elevado a -5 = 1 · 2 elevado a -6 = La suma es: 0,859375 0,5 0,25 0 0,0625 0,03125 0,015625 Operaciones con números binarios Suma de números binarios La tabla de sumar para números binarios es la siguiente: + 0 1 0 0 1 1 1 10 Las posibles combinaciones al sumar dos bits son: 0+0=0 0+1=1 1+0=1 1 + 1 = 10 Note que al sumar 1 + 1 es 102, es decir, llevamos 1 a la siguiente posición de la izquierda (acarreo). Esto es equivalente, en el sistema decimal a sumar 9 + 1, que da 10: cero en la posición que estamos sumando y un 1 de acarreo a la siguiente posición. Ejemplo 1 10011000 + 00010101 ——————————— 10101101 Se puede convertir la operación binaria en una operación decimal, resolver la decimal, y después transformar el resultado en un (número) binario. Operamos como en el sistema decimal: comenzamos a sumar desde la derecha, en nuestro ejemplo, 1 + 1 = 10, entonces escribimos 0 en la fila del resultado y llevamos 1 (este "1" se llama acarreo o arrastre). A continuación se suma el acarreo a la siguiente columna: 1 + 0 + 0 = 1, y seguimos hasta terminar todas la columnas (exactamente como en decimal). Resta de números binarios El algoritmo de la resta en sistema binario es el mismo que en el sistema decimal. Pero conviene repasar la operación de restar en decimal para comprender la operación binaria, que es más sencilla. Los términos que intervienen en la resta se llaman minuendo, sustraendo y diferencia. Las restas básicas 0 - 0, 1 - 0 y 1 - 1 son evidentes: 0-0=0 1-0=1 1-1=0 0 - 1 = 1 (se transforma en 10 - 1 = 1) (en sistema decimal equivale a 2 - 1 = 1) La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada de la posición siguiente: 0 - 1 = 1 y me llevo 1, lo que equivale a decir en el sistema decimal, 2 - 1 = 1. Ejemplos 10001 -01010 —————— 00111 11011001 -10101011 ————————— 00101110 En sistema decimal sería: 17 - 10 = 7 y 217 - 171 = 46. Para simplificar las restas y reducir la posibilidad de cometer errores hay varios métodos: Dividir los números largos en grupos. En el siguiente ejemplo, vemos cómo se divide una resta larga en tres restas cortas: 100110011101 -010101110010 ————————————— 010000101011 = 1001 -0101 ————— 0100 1001 -0111 ————— 0010 1101 -0010 ————— 1011 Utilizando el complemento a dos (C2). La resta de dos números binarios puede obtenerse sumando al minuendo el «complemento a dos» del sustraendo. Ejemplo La siguiente resta, 91 - 46 = 45, en binario es: 1011011 -0101110 ———————— 0101101 el C2 de 0101110 es 1010010 1011011 +1010010 ———————— 10101101 En el resultado nos sobra un bit, que se desborda por la izquierda. Pero, como el número resultante no puede ser más largo que el minuendo, el bit sobrante se desprecia. Un último ejemplo: vamos a restar 219 - 23 = 196, directamente y utilizando el complemento a dos: 11011011 -00010111 ————————— 11000100 el C2 de 00010111 es 11101001 11011011 +11101001 ————————— 111000100 Y, despreciando el bit que se desborda por la izquierda, llegamos al resultado correcto: 11000100 en binario, 196 en decimal. Utilizando el complemento a uno. La resta de dos números binarios puede obtenerse sumando al minuendo el complemento a uno del sustraendo y a su vez sumarle el bit que se desborda. Producto de números binarios La tabla de multiplicar para números binarios es la siguiente: · 0 1 0 0 0 1 0 1 El algoritmo del producto en binario es igual que en números decimales; aunque se lleva a cabo con más sencillez, ya que el 0 multiplicado por cualquier número da 0, y el 1 es el elemento neutro del producto. Por ejemplo, multipliquemos 10110 por 1001: 10110 1001 ————————— 10110 00000 00000 10110 ————————— 11000110 En sistemas electrónicos, donde suelen usarse números mayores, se utiliza el método llamado algoritmo de Booth. 11101111 111011 __________ 11101111 11101111 00000000 11101111 11101111 11101111 ______________ 11011100010101 División de números binarios La división en binario es similar a la decimal; la única diferencia es que a la hora de hacer las restas, dentro de la división, éstas deben ser realizadas en binario. Ejemplo Dividir 100010010 (274) entre 1101 (13): 100010010 |1101 —————— -0000 010101 ——————— 10001 -1101 ——————— 01000 - 0000 ——————— 10000 - 1101 ——————— 00111 - 0000 ——————— 01110 - 1101 ——————— 00001 Conversión entre sistema binario y octal Sistema Binario a octal Para realizar la conversión de binario a octal, realice lo siguiente: 1) Agrupe la cantidad binaria en grupos de 3 en 3 iniciando por el lado derecho. Si al terminar de agrupar no completa 3 dígitos, entonces agregue ceros a la izquierda. 2) Posteriormente vea el valor que corresponde de acuerdo a la tabla: Número en binario 000 001 010 011 100 101 110 111 Número en octal 0 1 2 3 4 5 6 7 3) La cantidad correspondiente en octal se agrupa de izquierda a derecha. Ejemplos 110111 (binario) = 67 (octal). Proceso: 111 = 7 110 = 6 Agrupe de izquierda a derecha: 67 11001111 (binario) = 317 (octal). Proceso: 111 = 7 001 = 1 11 entonces agregue un cero, con lo que se obtiene 011 = 3 Agrupe de izquierda a derecha: 317 1000011 (binario) = 103 (octal). Proceso: 011 = 3 000 = 0 1 entonces agregue 001 = 1 Agrupe de izquierda a derecha: 103 Octal a binario Cada dígito octal se convierte en su binario equivalente de 3 bits y se juntan en el mismo orden. Ejemplo 247 (octal) = 010100111 (binario). El 2 en binario es 10, pero en binario de 3 bits es Oc(2) = B(010); el Oc(4) = B(100) y el Oc(7) = (111), luego el número en binario será 010100111. Conversión entre binario y hexadecimal Binario a hexadecimal Para realizar la conversión de binario a hexadecimal, realice lo siguiente: 1) Agrupe la cantidad binaria en grupos de 4 en 4 iniciando por el lado derecho. Si al terminar de agrupar no completa 4 dígitos, entonces agregue ceros a la izquierda. 2) Posteriormente vea el valor que corresponde de acuerdo a la tabla: Número 000 000 001 001 010 010 011 011 100 100 101 101 110 110 111 111 en 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 binario Número en 0 hexadeci mal 1 2 3 4 5 6 7 8 9 A B C D E 3) La cantidad correspondiente en hexadecimal se agrupa de derecha a izquierda. Ejemplos 110111010 (binario) = 1BA (hexadecimal). Proceso: 1010 = A 1011 = B F 1 entonces agregue 0001 = 1 Agrupe de derecha a izquierda: 1BA 11011110101 (binario) = 6F5 (hexadecimal). Proceso: 0101 = 5 1111 = F 110 entonces agregue 0110 = 6 Agrupe de derecha a izquierda: 6F5 Hexadecimal a binario Note que para pasar de Hexadecimal a binario, se remplaza el numero Hexadecimal por el equivalente de 4 bits, de forma similar a como se hace de octal a binario. Tabla de conversión entre decimal, binario, hexadecimal, octal, BCD, Exceso 3 y Código Gray o Reflejado Decimal Binario Hexadecimal Octal BCD Exceso 3 Gray o Reflejado 0 0000 0 0 0000 0011 0000 1 0001 1 1 0001 0100 0001 2 0010 2 2 0010 0101 0011 3 0011 3 3 0011 0110 0010 4 0100 4 4 0100 0111 0110 5 0101 5 5 0101 1000 0111 6 0110 6 6 0110 1001 0101 7 0111 7 7 0111 1010 0100 8 1000 8 10 1000 1011 1100 9 1001 9 11 1001 1100 1101 10 1010 A 12 0001 0000 1111 11 1011 B 13 0001 0001 1110 12 1100 C 14 0001 0010 1010 13 1101 D 15 0001 0011 1011 14 1110 E 16 0001 0100 1001 15 1111 F 17 0001 0101 1000 Factorialización Tabla de conversión entre binario, factor binario, hexadecimal, octal y decimal Binario Factor binario Hexadecimal Octal Decimal 0000 0000 00 0 0 0 0000 0001 20 1 1 1 0000 0010 21 2 2 2 0000 0100 22 4 4 4 0000 1000 23 8 10 8 0001 0000 24 10 20 16 0010 0000 25 20 40 32 0100 0000 26 40 100 64 1000 0000 27 80 200 128 [editar] Véase también Sistema octal Sistema duodecimal Sistema hexadecimal Nibble [editar] Enlaces externos Convertidor Binario/Hex/Decimal Traductor Binario, Hexadecimal, Base64 Breve VIDEO-TUTORIAL sobre el sistema Binario y Decimal Codificación binaria Artículo Tabla de contenidos Introducción al sistema binario A finales de la década de 1930, Claude Shannon mostró que utilizando interruptores que se encontraban cerrados para "verdadero" y abiertos para "falso", se podían llevar a cabo operaciones lógicas asignando el número 1 a "verdadero" y el número 0 a "falso". Este sistema de codificación de información se denominó binario. Es la forma de codificación que permite el funcionamiento de los ordenadores. El sistema binario utiliza dos condiciones (representadas por los dígitos 0 y 1) para codificar información. Desde el año 2000 AC, los seres humanos han contado utilizando 10 dígitos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9). Esto se denomina "base decimal" (o base 10). Sin embargo, las civilizaciones antiguas, e incluso algunas aplicaciones actuales, utilizaron y continúan utilizando otras bases numéricas: Sexagesimal (60), utilizada por los Sumerios. Esta base se utiliza actualmente en nuestro sistema de cronometraje, para los minutos y los segundos, Vigesimal (20), utilizada por los mayas, Duodecimal (12), utilizada en el sistema monetario del Reino Unido e Irlanda hasta 1971: una "libra" valía veinte "chelines", y un "chelín" valía doce "peniques". El actual sistema de cronometraje también se basa en doce horas (algo que se traduce en el uso que se le da en Norteamérica), Quinario (5), utilizado por los mayas, Binario (2), utilizado por la tecnología digital. El bit (dígito binario) El término bit (abreviado con la minúscula b) significa dígito binario, y corresponde al número 0 o 1 en la numeración binaria. Es la unidad de información más pequeña que puede manipular una máquina digital. Es posible representar esta información binaria: con una señal eléctrica o magnética que, más allá de un cierto nivel, representa el 1, a través de la aspereza o profundidad de los hoyos de una superficie, utilizando circuitos eléctricos, componentes eléctricos que poseen dos condiciones estables (una que representa al 1 y la otra al 0). Por lo tanto, el bit se puede establecer con uno de dos estados: tanto con 1 como 0. Con dos bits, se pueden obtener 4 condiciones diferentes (2x2): 00 01 10 11 Con 3 bits, se pueden obtener ocho condiciones diferentes (2x2x2): Valor binario de 3 bits Valor decimal 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7 Con un grupo n de bits, es posible representar 2 n valores. Valores de los bits En un número binario, el valor de un bit depende de su posición, empezando desde la derecha. Como las decenas, centenas y millares en un número decimal, el valor de un bit se incrementa por dos a medida que va desde la derecha hacia la izquierda, como se muestra en el siguiente cuadro: Numero binario 1 1 1 1 1 1 1 1 Valor 27 = 128 26 = 64 25 = 32 24 = 16 23 = 8 22 = 4 21 = 2 20 = 1 Conversión Para convertir una cadena binaria en un número decimal se debe multiplicar cada bit por su valor, y luego sumar los productos. De esta forma, la cadena binaria 0101 en número decimal sería: 23x0 + 22x1 + 21x0 + 20x1 = 8x0 + 4x1 + 2x0 + 1x1 = 5 El byte El byte (abreviado con la mayúscula B) es una unidad de información compuesta por 8 bits. Se puede utilizar para almacenar, entre otras cosas, un carácter, como por ejemplo una letra o un número. Agrupar números en cúmulos de 8 facilita su lectura, así como agrupar números en grupos de tres hace más legibles los millares cuando se trabaja en base decimal. Por ejemplo, el número "1.256.245" se lee mejor que "1256245". Por lo general, una unidad de información de 16 bits se denomina palabra. Una unidad de información de 32 bits se denomina palabra doble (o también, dword). Para un byte, el menor número posible es 0 (representado por ocho ceros: 00000000), y el mayor es 255 (representado por ocho unos: 11111111), que permite la creación de 256 valores diferentes. 27 =128 26 =64 25 =32 24 =16 23 =8 22 =4 21 =2 20 =1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Kilobytes y megabytes Durante mucho tiempo, la informática fue una ciencia inusual ya que utilizaba diferentes valores para sus unidades, diferentes a las del sistema métrico (también llamado "sistema Internacional"). Los usuarios de ordenadores aprendían con rapidez que 1 kilobyte estaba compuesto por 1024 bytes. Por este motivo, en diciembre de 1998, la Comisión Electrotécnica Internacional intervino en el tema. (http://physics.nist.gov/cuu/Units/binary.html). La lista siguiente incluye las unidades estandarizadas de la IEC: Un kilobyte (kB) = 1000 bytes Un megabyte (MB) = 1000 kB = 1.000.000 bytes Un gigabyte (GB) = 1000 MB = 1.000.000.000 bytes Un terabyte (TB) = 1000 GB = 1.000.000.000.000 bytes ¡Advertencia! Algunos programas (e incluso algunos sistemas operativos) aún utilizan la notación anterior a 1998, que mostraremos a continuación: Un kilobyte (kB) = 210 bytes = 1024 bytes Un megabyte (MB) = 220 bytes = 1024 kB = 1.048.576 bytes Un gigabyte (GB) = 230 bytes = 1024 MB = 1.073.741.824 bytes Un terabyte (TB) = 240 bytes = 1024 GB = 1.099.511.627.776 bytes El IEC también definió el kilo binario (kibi), al mega binario (mebi), al giga binario (gibi) y al tera binario (tebi). Se definieron de la siguiente manera: Un kibibyte (kiB) vale 210 = 1024 bytes Un mebibyte (MiB) vale 220 = 1.048.576 bytes Un gibibyte (GiB) vale 230 = 1.073.741.824 bytes Un tebibyte (TiB) vale 240 = 1.099.511.627.776 bytes En algunos idiomas, como el francés y el finlandés, la palabra byte no empieza con la letra "b", pero la mayor parte de la comunidad internacional prefiere el término en inglés "byte". Esto da las siguientes notaciones para kilobyte, megabyte, gigabyte, y terabyte: kB, MB, GB, TB Observe el uso de la mayúscula B para distinguir Byte de bit. Esta es una captura de pantalla del programa HTTrack, el navegador de Internet fuera de línea más popular, que muestra cómo su utiliza esta notación: Operaciones binarias En el sistema binario se pueden realizar operaciones simples tales como adición, sustracción y multiplicación. Adición en el sistema binario La adición en el sistema binario sigue las mismas reglas que en el sistema decimal: Se comienza agregando los bits que tienen menor valor (aquellos que se encuentran en la derecha) y se lleva el valor al siguiente lugar cuando la suma de dos bits en la misma posición es más grande que el valor mayor de la unidad (en sistema binario: 1). Luego, este valor se transporta al bit de la siguiente posición. Por ejemplo: 01101 +01110 - - - - - 11011 Multiplicación en el sistema binario La tabla de multiplicación en el sistema binario es simple: 0x0=0 0x1=0 1x0=0 1x1=1 La multiplicación se realiza calculando un producto parcial para cada múltiplo (sólo los bits que no contiene 0 darán un resultado que no contenga ceros). Cuando el bit del múltiplo es cero, el producto parcial es nulo; cuando es equivalente a uno, el producto parcial se forma con el multiplicando, alternado un número X de veces, donde X es igual al peso del múltiplo del bit. Por ejemplo: 0 1 0 1 multiplicando x 0 0 1 0 múltiplo - - - - - 0000 0101 0000 - - - - - 01010