Un número binario es un número expresado en el sistema de numeración de base -2 o sistema de numeración binario , un método para representar números que utiliza solo dos símbolos para los números naturales : típicamente "0" ( cero ) y "1" ( uno ). Un número binario también puede referirse a un número racional que tiene una representación finita en el sistema de numeración binario, es decir, el cociente de un entero por una potencia de dos.
El sistema de numeración de base 2 es una notación posicional con un radio de 2. Cada dígito se denomina bit o dígito binario. Debido a su implementación sencilla en circuitos electrónicos digitales mediante puertas lógicas , el sistema binario es utilizado por casi todas las computadoras modernas y dispositivos informáticos como sistema de uso preferido, por sobre otras técnicas humanas de comunicación, debido a la simplicidad del lenguaje y la inmunidad al ruido en la implementación física. [1]
El sistema de numeración binario moderno fue estudiado en Europa en los siglos XVI y XVII por Thomas Harriot , Juan Caramuel y Lobkowitz y Gottfried Leibniz . Sin embargo, sistemas relacionados con los números binarios han aparecido antes en múltiples culturas, entre ellas el antiguo Egipto, China y la India.
Los escribas del antiguo Egipto utilizaban dos sistemas diferentes para sus fracciones, las fracciones egipcias (no relacionadas con el sistema numérico binario) y las fracciones de Ojo de Horus (llamadas así porque muchos historiadores de las matemáticas creen que los símbolos utilizados para este sistema podrían organizarse para formar el ojo de Horus , aunque esto ha sido discutido). [2] Las fracciones de Ojo de Horus son un sistema de numeración binario para cantidades fraccionarias de grano, líquidos u otras medidas, en el que una fracción de un hekat se expresa como una suma de las fracciones binarias 1/2, 1/4, 1/8, 1/16, 1/32 y 1/64. Las primeras formas de este sistema se pueden encontrar en documentos de la Quinta Dinastía de Egipto , aproximadamente 2400 a. C., y su forma jeroglífica completamente desarrollada data de la Decimonovena Dinastía de Egipto , aproximadamente 1200 a. C. [3]
El método utilizado para la multiplicación del antiguo Egipto también está estrechamente relacionado con los números binarios. En este método, la multiplicación de un número por un segundo se realiza mediante una secuencia de pasos en los que un valor (inicialmente el primero de los dos números) se duplica o se le vuelve a sumar el primer número; el orden en el que se deben realizar estos pasos viene dado por la representación binaria del segundo número. Este método se puede ver en uso, por ejemplo, en el Papiro matemático de Rhind , que data de alrededor de 1650 a. C. [4]
El I Ching data del siglo IX a. C. en China. [5] La notación binaria en el I Ching se utiliza para interpretar su técnica de adivinación cuaternaria . [6]
Se basa en la dualidad taoísta del yin y el yang . [7] Ocho trigramas (Bagua) y un conjunto de 64 hexagramas ("sesenta y cuatro" gua) , análogos a los numerales binarios de tres y seis bits, se utilizaban al menos desde la dinastía Zhou de la antigua China. [5]
El erudito de la dinastía Song Shao Yong (1011-1077) reorganizó los hexagramas en un formato que se asemeja a los números binarios modernos, aunque no tenía la intención de que su disposición se usara matemáticamente. [6] Viendo el bit menos significativo en la parte superior de los hexagramas individuales en el cuadrado de Shao Yong [8] y leyendo a lo largo de las filas, ya sea de abajo a la derecha a arriba a la izquierda con líneas sólidas como 0 y líneas discontinuas como 1 o de arriba a la izquierda a abajo a la derecha con líneas sólidas como 1 y líneas discontinuas como 0, los hexagramas pueden interpretarse como una secuencia de 0 a 63. [9]
Los etruscos dividían el borde exterior de los hígados adivinatorios en dieciséis partes, cada una de las cuales llevaba inscrito el nombre de una divinidad y su región del cielo. Cada región del hígado producía una lectura binaria que se combinaba en un binario final para la adivinación. [10]
La adivinación en el antiguo oráculo griego de Dodona se basaba en extraer información de frascos separados, tablillas de preguntas y píldoras de "sí" y "no". El resultado se combinaba luego para elaborar una profecía final. [11]
El erudito indio Pingala (c. siglo II a. C.) desarrolló un sistema binario para describir la prosodia . [12] [13] Describió los metros en forma de sílabas cortas y largas (estas últimas con una longitud igual a dos sílabas cortas). [14] Se las conocía como sílabas laghu (ligeras) y guru (pesadas).
El clásico hindú de Pingala titulado Chandaḥśāstra (8.23) describe la formación de una matriz para dar un valor único a cada metro. "Chandaḥśāstra" se traduce literalmente como ciencia de los metros en sánscrito. Las representaciones binarias en el sistema de Pingala aumentan hacia la derecha, y no hacia la izquierda como en los números binarios de la notación posicional moderna . [15] En el sistema de Pingala, los números comienzan desde el número uno, y no desde el cero. Cuatro sílabas cortas "0000" es el primer patrón y corresponde al valor uno. El valor numérico se obtiene sumando uno a la suma de los valores posicionales . [16]
El Ifá es un sistema de adivinación africano . Similar al I Ching , pero tiene hasta 256 signos binarios, [17] a diferencia del I Ching que tiene 64. El Ifá se originó en el siglo XV en África Occidental entre el pueblo yoruba . En 2008, la UNESCO agregó Ifá a su lista de las " Obras Maestras del Patrimonio Oral e Inmaterial de la Humanidad ". [18] [19]
Los habitantes de la isla de Mangareva en la Polinesia Francesa utilizaban un sistema binario- decimal híbrido antes de 1450. [20] Los tambores de hendidura con tonos binarios se utilizan para codificar mensajes en África y Asia. [7] Los conjuntos de combinaciones binarias similares al I Ching también se han utilizado en los sistemas tradicionales de adivinación africanos, como Ifá entre otros, así como en la geomancia occidental medieval . La mayoría de las lenguas indígenas australianas utilizan un sistema de base 2. [21]
A finales del siglo XIII, Ramon Llull tuvo la ambición de dar cuenta de toda la sabiduría en todas las ramas del conocimiento humano de la época. Para ello desarrolló un método general o “Ars generalis” basado en combinaciones binarias de una serie de principios básicos o categorías simples, por lo que se le ha considerado un precursor de la informática y de la inteligencia artificial. [22]
En 1605, Francis Bacon discutió un sistema por el cual las letras del alfabeto podrían ser reducidas a secuencias de dígitos binarios, que luego podrían ser codificados como variaciones apenas visibles en la fuente en cualquier texto aleatorio. [23] De manera importante para la teoría general de la codificación binaria, agregó que este método podría ser utilizado con cualquier objeto: "siempre que esos objetos sean capaces de una diferencia doble solamente; por ejemplo, por campanas, trompetas, luces y antorchas, por el sonido de los mosquetes y cualquier instrumento de naturaleza similar". [23] (Véase el cifrado de Bacon ).
En 1617, John Napier describió un sistema al que llamó aritmética de localización para realizar cálculos binarios utilizando una representación no posicional mediante letras. Thomas Harriot investigó varios sistemas de numeración posicional, incluido el binario, pero no publicó sus resultados; se encontraron más tarde entre sus artículos. [24] Posiblemente la primera publicación del sistema en Europa fue la de Juan Caramuel y Lobkowitz , en 1700. [25]
Leibniz escribió más de cien manuscritos sobre el sistema binario, la mayoría de los cuales permanecen inéditos. [26] Antes de su primera obra dedicada a él en 1679, numerosos manuscritos presentan intentos tempranos de explorar conceptos binarios, incluyendo tablas de números y cálculos básicos, a menudo garabateados en los márgenes de obras no relacionadas con las matemáticas. [26]
En su primer trabajo conocido sobre el sistema binario, “Sobre la progresión binaria” , de 1679, Leibniz introdujo la conversión entre el sistema decimal y el binario, junto con algoritmos para realizar operaciones aritméticas básicas como la suma, la resta, la multiplicación y la división utilizando números binarios. También desarrolló una forma de álgebra binaria para calcular el cuadrado de un número de seis dígitos y extraer raíces cuadradas. [26]
Su obra más conocida aparece en su artículo Explication de l'Arithmétique Binaire (publicado en 1703). El título completo del artículo de Leibniz se traduce al inglés como "Explication of Binary Arithmetic, which uses only the 1 and 0, with some remarks on its utility, and on the light that it arroja on the ancient Chinese figures of Fu Xi" (Explicación de la aritmética binaria, que utiliza sólo los caracteres 1 y 0, con algunas observaciones sobre su utilidad y sobre la luz que arroja sobre las antiguas cifras chinas de Fu Xi ) . [27] El sistema de Leibniz utiliza 0 y 1, como el sistema de numeración binario moderno. Un ejemplo del sistema de numeración binario de Leibniz es el siguiente: [27]
En 1700, durante una correspondencia con el sacerdote jesuita Joachim Bouvet , que se había convertido en un experto en el I Ching durante su misión en China, Leibniz explicó su notación binaria y Bouvet demostró en sus cartas de 1701 que el I Ching era una invención paralela e independiente de la notación binaria. Leibniz y Bouvet concluyeron que esta correspondencia era una prueba de los importantes logros chinos en el tipo de matemática filosófica que él admiraba. [28] Sobre esta invención paralela, Leibniz escribió en su "Explicación de la aritmética binaria" que "esta restitución de su significado, después de un intervalo de tiempo tan grande, parecerá aún más curiosa". [29]
La relación era una idea central de su concepto universal de lenguaje o characterizati universalis , una idea popular que sería seguida de cerca por sus sucesores como Gottlob Frege y George Boole en la formación de la lógica simbólica moderna . [30] Leibniz conoció por primera vez el I Ching a través de su contacto con el jesuita francés Joachim Bouvet , quien visitó China en 1685 como misionero. Leibniz vio los hexagramas del I Ching como una afirmación de la universalidad de sus propias creencias religiosas como cristiano. [31] Los números binarios fueron centrales para la teología de Leibniz. Creía que los números binarios eran un símbolo de la idea cristiana de creatio ex nihilo o creación de la nada. [32]
[Un concepto que] no es fácil de transmitir a los paganos es el de la creación ex nihilo por medio del poder omnipotente de Dios. Ahora bien, se puede decir que nada en el mundo puede presentar y demostrar mejor este poder que el origen de los números, tal como se presenta aquí a través de la presentación simple y sin adornos del Uno y el Cero o la Nada.
— Carta de Leibniz al duque de Brunswick adjunta con los hexagramas del I Ching [31]
En 1854, el matemático británico George Boole publicó un artículo fundamental en el que detallaba un sistema algebraico de lógica que se conocería como álgebra de Boole . Su cálculo lógico sería fundamental para el diseño de circuitos electrónicos digitales. [33]
En 1937, Claude Shannon elaboró su tesis de maestría en el MIT , en la que implementó el álgebra de Boole y la aritmética binaria utilizando relés e interruptores electrónicos por primera vez en la historia. Titulada Un análisis simbólico de los circuitos de conmutación y relés , la tesis de Shannon esencialmente sentó las bases del diseño práctico de circuitos digitales . [34]
En noviembre de 1937, George Stibitz , que trabajaba en Bell Labs , completó una computadora basada en relés que denominó "Modelo K" (por " K itchen", donde la había ensamblado), que calculaba mediante la adición binaria. [35] Bell Labs autorizó un programa de investigación completo a fines de 1938 con Stibitz al mando. Su computadora de números complejos, completada el 8 de enero de 1940, pudo calcular números complejos . En una demostración en la conferencia de la American Mathematical Society en Dartmouth College el 11 de septiembre de 1940, Stibitz pudo enviar comandos remotos a la calculadora de números complejos a través de líneas telefónicas mediante un teletipo . Fue la primera máquina de computación jamás utilizada de forma remota a través de una línea telefónica. Algunos participantes de la conferencia que presenciaron la demostración fueron John von Neumann , John Mauchly y Norbert Wiener , quien escribió sobre ella en sus memorias. [36] [37] [38]
La computadora Z1 , que fue diseñada y construida por Konrad Zuse entre 1935 y 1938, utilizaba lógica booleana y números binarios de punto flotante . [39]
Cualquier número puede representarse mediante una secuencia de bits (dígitos binarios), que a su vez pueden representarse mediante cualquier mecanismo capaz de estar en dos estados mutuamente excluyentes. Cualquiera de las siguientes filas de símbolos puede interpretarse como el valor numérico binario de 667:
El valor numérico representado en cada caso depende del valor asignado a cada símbolo. En los primeros tiempos de la informática, se utilizaban interruptores, agujeros perforados y cintas de papel perforadas para representar valores binarios. [40] En una computadora moderna, los valores numéricos pueden representarse mediante dos voltajes diferentes ; en un disco magnético , se pueden utilizar polaridades magnéticas . Un estado "positivo", " sí " o "encendido" no es necesariamente equivalente al valor numérico de uno; depende de la arquitectura en uso.
De acuerdo con la representación habitual de los números mediante números arábigos , los números binarios se escriben comúnmente utilizando los símbolos 0 y 1. Cuando se escriben, los números binarios suelen ir acompañados de subíndices, prefijos o sufijos para indicar su base o radix . Las siguientes notaciones son equivalentes:
Cuando se pronuncian, los números binarios se suelen leer dígito por dígito, para distinguirlos de los números decimales. Por ejemplo, el número binario 100 se pronuncia uno cero cero , en lugar de cien , para hacer explícita su naturaleza binaria y con fines de corrección. Dado que el número binario 100 representa el valor cuatro, sería confuso referirse al número como cien (una palabra que representa un valor o cantidad completamente diferente). Alternativamente, el número binario 100 se puede leer como "cuatro" (el valor correcto ), pero esto no hace explícita su naturaleza binaria.
El conteo en binario es similar al conteo en cualquier otro sistema numérico. Se comienza con un solo dígito y se procede a contar con cada símbolo en orden creciente. Antes de analizar el conteo binario, es útil analizar brevemente el sistema de conteo decimal, más conocido , como marco de referencia.
El conteo decimal utiliza los diez símbolos del 0 al 9. El conteo comienza con la sustitución incremental del dígito menos significativo (dígito más a la derecha), que a menudo se denomina primer dígito . Cuando se agotan los símbolos disponibles para esta posición, el dígito menos significativo se restablece a 0 y el siguiente dígito de mayor importancia (una posición a la izquierda) se incrementa ( desbordamiento ), y se reanuda la sustitución incremental del dígito de orden inferior. Este método de restablecimiento y desbordamiento se repite para cada dígito de importancia. El conteo avanza de la siguiente manera:
El conteo binario sigue exactamente el mismo procedimiento y, nuevamente, la sustitución incremental comienza con el dígito binario menos significativo, o bit (el que está más a la derecha, también llamado primer bit ), excepto que solo están disponibles los dos símbolos 0 y 1. Por lo tanto, después de que un bit llega a 1 en binario, un incremento lo restablece a 0 pero también provoca un incremento del siguiente bit a la izquierda:
En el sistema binario, cada bit representa una potencia creciente de 2, donde el bit más a la derecha representa 2 0 , el siguiente representa 2 1 , luego 2 2 , y así sucesivamente. El valor de un número binario es la suma de las potencias de 2 representadas por cada bit "1". Por ejemplo, el número binario 100101 se convierte a formato decimal de la siguiente manera:
Las fracciones en aritmética binaria terminan solo si el denominador es una potencia de 2. Como resultado, 1/10 no tiene una representación binaria finita ( 10 tiene factores primos 2 y 5 ). Esto hace que 10 × 1/10 no sea exactamente igual a 1 en aritmética binaria de punto flotante . Como ejemplo, para interpretar la expresión binaria para 1/3 = .010101..., esto significa: 1/3 = 0 × 2 −1 + 1 × 2 −2 + 0 × 2 −3 + 1 × 2 −4 + ... = 0.3125 + ... No se puede encontrar un valor exacto con una suma de un número finito de potencias inversas de dos, los ceros y unos en la representación binaria de 1/3 se alternan para siempre.
La aritmética en binario es muy parecida a la aritmética en otros sistemas numéricos de notación posicional . Se pueden realizar sumas, restas, multiplicaciones y divisiones en números binarios.
La operación aritmética más sencilla en binario es la suma. Sumar dos números binarios de un solo dígito es relativamente sencillo y se utiliza una forma de llevar:
La suma de dos dígitos "1" produce un dígito "0", mientras que el 1 deberá agregarse a la siguiente columna. Esto es similar a lo que sucede en el sistema decimal cuando se suman ciertos números de un solo dígito; si el resultado es igual o mayor que el valor de la base (10), se incrementa el dígito de la izquierda:
Esto se conoce como llevar . Cuando el resultado de una suma supera el valor de un dígito, el procedimiento es "llevar" la cantidad sobrante dividida por la base (es decir, 10/10) hacia la izquierda, sumándola al siguiente valor posicional. Esto es correcto ya que la siguiente posición tiene un peso que es mayor por un factor igual a la base. El llevar funciona de la misma manera en binario:
1 1 1 1 1 (dígitos transportados) 0 1 1 0 1+ 1 0 1 1 1-------------= 1 0 0 1 0 0 = 36
En este ejemplo, se suman dos números: 01101 2 (13 10 ) y 10111 2 (23 10 ). La fila superior muestra los bits de acarreo utilizados. Empezando por la columna más a la derecha, 1 + 1 = 10 2 . El 1 se lleva a la izquierda y el 0 se escribe en la parte inferior de la columna más a la derecha. Se suma la segunda columna desde la derecha: 1 + 0 + 1 = 10 2 de nuevo; se lleva el 1 y se escribe el 0 en la parte inferior. La tercera columna: 1 + 1 + 1 = 11 2 . Esta vez, se lleva un 1 y se escribe un 1 en la fila inferior. Procediendo de esta manera, se obtiene la respuesta final 100100 2 (36 10 ).
Cuando las computadoras deben sumar dos números, la regla: x xor y = (x + y) mod 2 para cualesquiera dos bits x e y también permite un cálculo muy rápido.
Una simplificación para muchos problemas de suma binaria es el "método de acarreo largo" o "método Brookhouse de suma binaria". Este método es particularmente útil cuando uno de los números contiene una larga serie de unos. Se basa en la sencilla premisa de que, en el sistema binario, cuando se da una serie de dígitos compuesta enteramente por n unos (donde n es cualquier longitud entera), sumar 1 dará como resultado el número 1 seguido de una serie de n ceros. Ese concepto se desprende, lógicamente, del mismo modo que en el sistema decimal, donde sumar 1 a una serie de n 9 dará como resultado el número 1 seguido de una serie de n 0:
Decimal binario 1 1 1 1 1 igualmente 9 9 9 9 9 + 1 + 1 ——————————— ——————————— 1 0 0 0 0 0 1 0 0 0 0 0
Este tipo de cadenas largas son bastante comunes en el sistema binario. De ahí que se descubra que se pueden sumar números binarios grandes utilizando dos sencillos pasos, sin operaciones de acarreo excesivas. En el siguiente ejemplo, se suman dos números: 1 1 1 0 1 1 1 1 1 0 2 (958 10 ) y 1 0 1 0 1 1 0 0 1 1 2 (691 10 ), utilizando el método de acarreo tradicional a la izquierda y el método de acarreo largo a la derecha:
Método de transporte tradicional Método de transporte largo vs. 1 1 1 1 1 1 1 1 (dígitos transportados) 1 ← 1 ← transporta el 1 hasta que esté un dígito más allá de la "cadena" de abajo 1 1 1 0 1 1 1 1 1 01 1 101 1 1 1 10 tacha la "cadena",+ 1 0 1 0 1 1 0 0 1 1 + 1 010 1 1 0 011 y tacha el dígito que se le agregó——————————————————————— ———————————————————————= 1 1 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0 1
La fila superior muestra los bits de acarreo utilizados. En lugar del acarreo estándar de una columna a la siguiente, se puede agregar el "1" de menor orden con un "1" en el valor de posición correspondiente debajo y se puede llevar un "1" a un dígito más allá del final de la serie. Los números "utilizados" deben eliminarse, ya que ya se han agregado. Otras cadenas largas también se pueden cancelar utilizando la misma técnica. Luego, simplemente se suman los dígitos restantes normalmente. Procediendo de esta manera se obtiene la respuesta final de 1 1 0 0 1 1 1 0 0 0 1 2 (1649 10 ). En nuestro ejemplo simple con números pequeños, el método de acarreo tradicional requirió ocho operaciones de acarreo, mientras que el método de acarreo largo requirió solo dos, lo que representa una reducción sustancial del esfuerzo.
La tabla de adición binaria es similar, pero no igual, a la tabla de verdad de la operación de disyunción lógica . La diferencia es que , mientras que .
La resta funciona de la misma manera:
Restar un dígito "1" de un dígito "0" produce el dígito "1", mientras que habrá que restar 1 de la siguiente columna. Esto se conoce como préstamo . El principio es el mismo que para el acarreo. Cuando el resultado de una resta es menor que 0, el menor valor posible de un dígito, el procedimiento es "tomar prestado" el déficit dividido por la base (es decir, 10/10) de la izquierda, restándolo del siguiente valor posicional.
* * * * (las columnas marcadas con asterisco están tomadas de) 1 1 0 1 1 1 0- 1 0 1 1 1----------------= 1 0 1 0 1 1 1
* (las columnas marcadas con asterisco están tomadas de) 1 0 1 1 1 1 1– 1 0 1 0 1 1----------------= 0 1 1 0 1 0 0
Restar un número positivo es equivalente a sumar un número negativo de igual valor absoluto . Las computadoras utilizan representaciones de números con signo para manejar números negativos, la más común es la notación de complemento a dos . Dichas representaciones eliminan la necesidad de una operación de "resta" separada. Usando la notación de complemento a dos, la resta se puede resumir con la siguiente fórmula:
La multiplicación en binario es similar a su contraparte decimal. Dos números A y B se pueden multiplicar por productos parciales: para cada dígito de B , se calcula el producto de ese dígito en A y se escribe en una nueva línea, desplazada hacia la izquierda de modo que su dígito más a la derecha se alinee con el dígito de B que se utilizó. La suma de todos estos productos parciales da el resultado final.
Como en binario solo hay dos dígitos, solo hay dos resultados posibles de cada multiplicación parcial:
Por ejemplo, los números binarios 1011 y 1010 se multiplican de la siguiente manera:
1 0 1 1 ( Un ) × 1 0 1 0 ( B ) --------- 0 0 0 0 ← Corresponde al 'cero' más a la derecha en B + 1 0 1 1 ← Corresponde al siguiente 'uno' en B + 0 0 0 0 + 1 0 1 1 --------------- = 1 1 0 1 1 1 0
Los números binarios también se pueden multiplicar con bits después de un punto binario :
1 0 1 . 1 0 1 A (5.625 in decimal) × 1 1 0 . 0 1 B (6.25 in decimal) ------------------- 1 . 0 1 1 0 1 ← Corresponds to a 'one' in B + 0 0 . 0 0 0 0 ← Corresponds to a 'zero' in B + 0 0 0 . 0 0 0 + 1 0 1 1 . 0 1 + 1 0 1 1 0 . 1 --------------------------- = 1 0 0 0 1 1 . 0 0 1 0 1 (35.15625 in decimal)
See also Booth's multiplication algorithm.
The binary multiplication table is the same as the truth table of the logical conjunction operation .
Long division in binary is again similar to its decimal counterpart.
In the example below, the divisor is 1012, or 5 in decimal, while the dividend is 110112, or 27 in decimal. The procedure is the same as that of decimal long division; here, the divisor 1012 goes into the first three digits 1102 of the dividend one time, so a "1" is written on the top line. This result is multiplied by the divisor, and subtracted from the first three digits of the dividend; the next digit (a "1") is included to obtain a new three-digit sequence:
1 ___________1 0 1 ) 1 1 0 1 1 − 1 0 1 ----- 0 0 1
The procedure is then repeated with the new sequence, continuing until the digits in the dividend have been exhausted:
1 0 1 ___________1 0 1 ) 1 1 0 1 1 − 1 0 1 ----- 1 1 1 − 1 0 1 ----- 0 1 0
Thus, the quotient of 110112 divided by 1012 is 1012, as shown on the top line, while the remainder, shown on the bottom line, is 102. In decimal, this corresponds to the fact that 27 divided by 5 is 5, with a remainder of 2.
Aside from long division, one can also devise the procedure so as to allow for over-subtracting from the partial remainder at each iteration, thereby leading to alternative methods which are less systematic, but more flexible as a result.
The process of taking a binary square root digit by digit is the same as for a decimal square root and is explained here. An example is:
1 0 0 1 --------- √ 1010001 1 --------- 101 01 0 -------- 1001 100 0 -------- 10001 10001 10001 ------- 0
Though not directly related to the numerical interpretation of binary symbols, sequences of bits may be manipulated using Boolean logical operators. When a string of binary symbols is manipulated in this way, it is called a bitwise operation; the logical operators AND, OR, and XOR may be performed on corresponding bits in two binary numerals provided as input. The logical NOT operation may be performed on individual bits in a single binary numeral provided as input. Sometimes, such operations may be used as arithmetic short-cuts, and may have other computational benefits as well. For example, an arithmetic shift left of a binary number is the equivalent of multiplication by a (positive, integral) power of 2.
To convert from a base-10 integer to its base-2 (binary) equivalent, the number is divided by two. The remainder is the least-significant bit. The quotient is again divided by two; its remainder becomes the next least significant bit. This process repeats until a quotient of one is reached. The sequence of remainders (including the final quotient of one) forms the binary value, as each remainder must be either zero or one when dividing by two. For example, (357)10 is expressed as (101100101)2.[43]
Conversion from base-2 to base-10 simply inverts the preceding algorithm. The bits of the binary number are used one by one, starting with the most significant (leftmost) bit. Beginning with the value 0, the prior value is doubled, and the next bit is then added to produce the next value. This can be organized in a multi-column table. For example, to convert 100101011012 to decimal:
The result is 119710. The first Prior Value of 0 is simply an initial decimal value. This method is an application of the Horner scheme.
The fractional parts of a number are converted with similar methods. They are again based on the equivalence of shifting with doubling or halving.
In a fractional binary number such as 0.110101101012, the first digit is , the second , etc. So if there is a 1 in the first place after the decimal, then the number is at least , and vice versa. Double that number is at least 1. This suggests the algorithm: Repeatedly double the number to be converted, record if the result is at least 1, and then throw away the integer part.
For example, , in binary, is:
Thus the repeating decimal fraction 0.3... is equivalent to the repeating binary fraction 0.01... .
Or for example, 0.110, in binary, is:
This is also a repeating binary fraction 0.00011... . It may come as a surprise that terminating decimal fractions can have repeating expansions in binary. It is for this reason that many are surprised to discover that 1/10 + ... + 1/10 (addition of 10 numbers) differs from 1 in binary floating point arithmetic. In fact, the only binary fractions with terminating expansions are of the form of an integer divided by a power of 2, which 1/10 is not.
The final conversion is from binary to decimal fractions. The only difficulty arises with repeating fractions, but otherwise the method is to shift the fraction to an integer, convert it as above, and then divide by the appropriate power of two in the decimal base. For example:
Another way of converting from binary to decimal, often quicker for a person familiar with hexadecimal, is to do so indirectly—first converting ( in binary) into ( in hexadecimal) and then converting ( in hexadecimal) into ( in decimal).
For very large numbers, these simple methods are inefficient because they perform a large number of multiplications or divisions where one operand is very large. A simple divide-and-conquer algorithm is more effective asymptotically: given a binary number, it is divided by 10k, where k is chosen so that the quotient roughly equals the remainder; then each of these pieces is converted to decimal and the two are concatenated. Given a decimal number, it can be split into two pieces of about the same size, each of which is converted to binary, whereupon the first converted piece is multiplied by 10k and added to the second converted piece, where k is the number of decimal digits in the second, least-significant piece before conversion.
Binary may be converted to and from hexadecimal more easily. This is because the radix of the hexadecimal system (16) is a power of the radix of the binary system (2). More specifically, 16 = 24, so it takes four digits of binary to represent one digit of hexadecimal, as shown in the adjacent table.
To convert a hexadecimal number into its binary equivalent, simply substitute the corresponding binary digits:
To convert a binary number into its hexadecimal equivalent, divide it into groups of four bits. If the number of bits isn't a multiple of four, simply insert extra 0 bits at the left (called padding). For example:
To convert a hexadecimal number into its decimal equivalent, multiply the decimal equivalent of each hexadecimal digit by the corresponding power of 16 and add the resulting values:
Binary is also easily converted to the octal numeral system, since octal uses a radix of 8, which is a power of two (namely, 23, so it takes exactly three binary digits to represent an octal digit). The correspondence between octal and binary numerals is the same as for the first eight digits of hexadecimal in the table above. Binary 000 is equivalent to the octal digit 0, binary 111 is equivalent to octal 7, and so forth.
Converting from octal to binary proceeds in the same fashion as it does for hexadecimal:
And from binary to octal:
And from octal to decimal:
Non-integers can be represented by using negative powers, which are set off from the other digits by means of a radix point (called a decimal point in the decimal system). For example, the binary number 11.012 means:
For a total of 3.25 decimal.
All dyadic rational numbers have a terminating binary numeral—the binary representation has a finite number of terms after the radix point. Other rational numbers have binary representation, but instead of terminating, they recur, with a finite sequence of digits repeating indefinitely. For instance
The phenomenon that the binary representation of any rational is either terminating or recurring also occurs in other radix-based numeral systems. See, for instance, the explanation in decimal. Another similarity is the existence of alternative representations for any terminating representation, relying on the fact that 0.111111... is the sum of the geometric series 2−1 + 2−2 + 2−3 + ... which is 1.
Binary numerals that neither terminate nor recur represent irrational numbers. For instance,
You could say [the Fuxi binary sequence] is a more sensible way of rendering hexagram as binary numbers ... The reasoning, if any, that informs [the King Wen] sequence is unknown.