¿Por qué las computadoras cuentan en binario?

Antes de que pueda comprender por qué las computadoras usan el sistema binario, observe estas estructuras cuidadosamente. Mira si puedes notar algún patrón genérico o un fenómeno.

Déjanos ver lo que todos has notado.

  • Cada estructura está construida usando pequeñas baldosas con un símbolo en ella.
  • El de la izquierda tiene una combinación de alfabetos y números. Tiene 16 símbolos – (0–9, AF) . Esto se denomina representación” hexadecimal de los números.
  • El que está en el centro es algo con lo que hemos crecido. Tiene 10 simbolos. (0–9). Esta es nuestra propia ” representación” decimal de números.
  • Uno de la derecha tiene solo dos símbolos: 0 y 1 . Esta es una ” representación” binaria de números. Esto es lo que los dispositivos electrónicos han estado usando. Cada mosaico se llama bitdígito binario .
  • Todas estas son solo representaciones de los mismos números: de cero a dieciséis.
  • Podría haber puesto más de ellos allí, pero entonces los números son infinitos, tuve que parar en alguna parte.
  • Tenga en cuenta que a medida que avanzamos en la estructura, el ancho aumenta y usted necesita más y más mosaicos.
  • Cada representación comienza con una única ficha, hasta que todos los símbolos se agotan. Cuando esto sucede, comenzamos de nuevo desde el principio y una ficha a la izquierda. Podemos seguir haciéndolo infinitas veces hasta que nos quedemos sin espacio en el curso.
  • Así que si tienes más símbolos, puedes ahorrar espacio. Puedes notar que el sistema hexadecimal es el más delgado. Se convierte en “10” en 16. El sistema decimal se convierte en “10” en 10. y el sistema binario se convierte en “10” en 2.
  • Entonces, si quieres ahorrar más espacio, necesitarás más símbolos. Tal vez, incluya todos los alfabetos: pequeño y mayúsculo y tenga como un sistema con símbolos que van desde (0–9, AZ y az) que nos dan 62 símbolos. Estos se convertirán en “10” en 62. Mientras que 0–61 estarán en una sola ficha.

Por un momento, en lugar de pensar, ¿por qué las computadoras usan binario, nos preguntamos, por qué usamos el sistema decimal? Tal vez eso fue algo natural para nosotros. Como teníamos diez dedos aprendimos a limitarnos en decenas. Esto probablemente nos hizo tener el hábito de recordar 10 símbolos. Esto es solo mi conjetura. No estoy seguro.

Entonces, elegimos diez símbolos. Multa. Ahora la pregunta candente!

Si tener dos símbolos ocupa mucho espacio y estamos acostumbrados al sistema decimal, ¿por qué las computadoras solo tienen dos símbolos diferentes?

Porque los dispositivos electrónicos se comunican mediante corriente eléctrica. Para eso tuvimos que usar diferentes voltajes para representar símbolos. Teniendo en cuenta varias complicaciones y fluctuaciones de voltaje, fue mucho más fácil garantizar dos estados diferentes: alto y bajo . Ambos tenían rangos propios y los sistemas podían construirse siguiendo ciertos estándares. Estos se convirtieron en la base de toda la electrónica digital y la informática.


Cualquier cosa que se pueda representar usando números. Puede representarse utilizando binario y, en última instancia, puede digitalizarse.

TEXTO : todos los símbolos que vemos en la pantalla como texto, ya sean alfabetos en inglés, tanto en la parte inferior como en la superior, símbolos de otros idiomas, números, signos de puntuación, notaciones matemáticas e incluso nuestros queridos emojis.

Todos estos son llamados personajes Unicode . Cada uno tiene un código único. Tipo de número de matrícula internacionalmente aceptado que se les ha dado. Esto utiliza un patrón de bits de dieciséis bits para representar cada carácter, lo que nos da la capacidad de representar 65536 caracteres diferentes. Esto nos permite saber más acerca de cómo llegó a ser esto, puede leer mi respuesta a por qué es eso, 1 byte es igual a 8 bits?

En resumen, las computadoras pueden representar el texto como 1s y 0s.


COLORES: los colores se representan como una combinación de 3 bytes, donde cada byte representa números que van de 0 a 255. Estos representan una intensidad de 3 colores: rojo, azul y verde. Estos son los colores primarios cuya combinación compensa los 16777216 colores. Si también tiene en cuenta el factor de transparencia, puede multiplicarlo con 256 nuevamente.

En resumen, las computadoras pueden representar los colores como 1s y 0s.


IMÁGENES: las imágenes no son más que una colección de celdas pequeñas y pequeñas llamadas ” píxeles “, también conocidos como elementos de imagen, en la pantalla que muestra un color. Si amplías mucho una imagen, comenzarás a notar que estos cuadrados tienen un color en ellos.

Entonces, ¿qué es un fondo de pantalla de 1024 × 768 para una computadora? Nada más que una colección de píxeles. Cada uno es una combinación de números que representan un color, que a su vez es un número que se puede representar en binario.

En resumen, las computadoras pueden representar imágenes como 1s y 0s.


VIDEOS – ¿Qué son los videos? Los videos no son más que series de cuadros de imágenes por instante de tiempo. Cada imagen siendo píxeles de colección de colores. Cada uno vuelve a ser una combinación de R, G y B y opcionalmente nivel de transparencia.

En resumen, las computadoras pueden representar videos como 1s y 0s.

SONIDO – ¿Qué es el sonido para las computadoras? Es la frecuencia medida en hercios que puede representarse como números y no hace falta decir que puede representarse en forma binaria.

En resumen, las computadoras pueden representar el sonido como 1s y 0s.


La representación binaria es algo que las computadoras pueden usar fácilmente. Se ha estado investigando para encontrar hardware que pueda almacenar símbolos discretos con certeza, pero existe todo un ecosistema de académicos, industrias y empresas construido sobre esto que será muy difícil encontrar algo nuevo y hacerlo comercialmente. aceptable.

Me sorprende que de tantas respuestas aquí, nadie defina correctamente el problema. El problema no está en las computadoras, el problema reside en el hardware que conforma las computadoras. Básicamente las computadoras son derivadas de la electricidad. Eso significa que, para almacenar datos, usamos carga eléctrica usando capacitores y transistores. Si hay carga almacenada, la llamamos 1 (activada o verdadera), si no hay ninguna carga o mínima, la llamamos 0 (desactivada o falsa). Binario es un sistema numérico que comprende solo 0s y 1s.

Ahora supongamos que podríamos hacer condensadores que reporten múltiples niveles de carga. Por ejemplo. Para convertir las computadoras en sistemas decimales, debe poder diferenciar entre sin cargo y 9 niveles de carga diferentes. El problema con esto es que a medida que continúa utilizando este hardware, tiene desgaste y, de repente, no es tan preciso con el tiempo. Por lo tanto, es posible que tengas fugas de voltaje o resistencias que no tenías en cuenta anteriormente. Otro problema fundamental con la electricidad es que el cable que la transporta, induce resistencia, por lo que técnicamente, cuanto mayor sea la distancia, mayor será la resistencia. Imagínese que navega por un sitio web en el extranjero que deseaba enviarle 9 bits, pero debido a la reducción de la carga, su transistor recibió una carga de solo 8 bits. Eso sería desastroso. En el caso de binario, la resistencia no parece dañar mucho ya que una pequeña pérdida de carga no cambia de 1 a 0. Todavía significa que hay carga, al transistor no le importa cuánta carga, siempre que haya suficiente para calificar como 1 (u ON).

Como pediste, para usar el inglés en lugar del binario, el transistor debería poder diferenciar entre al menos 72 niveles de carga. (26 csse inferior, 26 mayúsculas, 10 números y 10 caracteres especiales). Ni siquiera estoy considerando otros idiomas que utilicen diéresis (o puntos y a), así como idiomas asiáticos que tienen cientos o más caracteres. Mantener tal precisión de carga es físicamente imposible dado nuestra comprensión actual de la física.

La limitación no es con la informática. El hecho de Informática ni siquiera comienza en ese nivel. Informática es un estudio de lo que hacemos con esos datos en lugar de cómo se almacenan esos datos. La respuesta que busca es que usemos binarios debido a nuestra limitada comprensión de cómo funciona la física o la electricidad.

Cambiar un poco tu pregunta (lo que creo que estás preguntando) es:

“¿Por qué la base de la computación sigue siendo binaria, y no algo más natural e intuitivo como el inglés?”

Al responder a esta pregunta, diría que se debe principalmente a la historia de la computación (y a qué computadora de “rol” ha jugado históricamente, junto con los avances que han hecho que la computación sea barata y ubicua):

Para comenzar, muchas de las primeras cosas que llamamos computadoras (pero más formalmente conocidas como “Computadoras de programa almacenado de Turing moderno completo”) fueron diseñadas para resolver / simplificar / automatizar tipos de problemas “matemáticos” … uno de los primeros y más Computadoras conocidas, la ENIAC significaba ” Integrador Numérico Electrónico y Computadora”. ENIAC se diseñó inicialmente para calcular las tablas de disparo de artillería (que es un problema matemático).

Antes de la ENIAC, existían calculadoras mecánicas (desde 1600) y los telares se “programaban” en la década de 1800 con tarjetas perforadas …

La razón por la que menciono esto es porque los problemas que intentaban resolver las “máquinas informáticas” eran matemáticos o no ambiguos … Una tarjeta perforada que se usaba para programar telares textiles desde 1725.
Y este “problema” de programación de la máquina de telar se asigna muy bien a una máquina que interpreta “binario” … la máquina de tejer interpreta y ejecuta cuando encuentra un “agujero perforado” (un “1” binario) de manera diferente cuando se encuentra “sin perforar” agujero “(un binario” 0 “).

Paralelamente a estas innovaciones mecánicas / físicas en la fabricación de textiles y el cálculo mecánico, se realizó un gran trabajo teórico sobre codificación binaria (Codificación binaria de Frances Bacon en 1605, Sistema de números binarios de Leibnitz en 1679, Álgebra booleana de George Boole en 1853).

Eventualmente, cuando estas teorías se fusionaron con la tecnología mecánica (es decir, el advenimiento de la electricidad) … Los pioneros de la computadora del programa almacenado se dieron cuenta de que:
1) binario es bueno para modelar tipos de datos comunes (enteros, caracteres) que se pueden usar en una computadora programable para calcular cosas
2) las instrucciones del programa también podrían escribirse de forma inequívoca en binario
3) los datos y las instrucciones del programa podrían almacenarse a largo plazo de la manera más efectiva (barata) utilizando dispositivos físicos que se destacaron en el almacenamiento de datos binarios

La clave aquí es que todas nuestras computadoras modernas usan binario porque

  • era barato”
  • es bien entendido
  • es inequívoco
  • puede ser reutilizado / asignado a cosas de nivel superior (números, caracteres, tuplas, instrucciones)

Entonces, la versión corta de TL; DR es:
binario es “genérico” y una excelente base para modelar algo tan complejo como el idioma inglés o el álgebra lineal o instrucciones complejas (programas) …

Y binario también es bueno para modelar cosas de “bajo nivel” (como el telar textil, que interpreta efectivamente el binario como un grupo de SI / NO secuenciales)

Sin embargo, hay una investigación interesante dedicada a la computación cuántica (la inversión de $ 3 mil millones de IBM en cerebros sintéticos y computación cuántica) que no se basa en la lógica binaria.

Los números binarios , vistos como cadenas de 0 y 1, a menudo se asocian con las computadoras. Pero ¿por qué es esto? ¿Por qué las computadoras no pueden usar la base 10 en lugar de convertirse al binario? ¿No es más eficiente usar una base más alta, ya que la representación binaria (base 2) usa más “espacios”?

Recientemente, alguien que sabe mucho sobre computadoras me hizo esta pregunta. Pero esta pregunta también suele ser hecha por personas que no son tan expertas en tecnología. De cualquier manera, la respuesta es bastante simple.

¿Qué es “digital”?

Una computadora “digital” de hoy en día, a diferencia de una computadora “analógica” más antigua, funciona según el principio de dos estados posibles de algo: “encendido” y “apagado”. Esto corresponde directamente a que haya una corriente eléctrica presente o que dicha corriente eléctrica esté ausente. Al estado “encendido” se le asigna el valor “1”, mientras que al estado “apagado” se le asigna el valor “0”.

El término “binario” implica “dos”. Por lo tanto, el sistema de números binarios es un sistema de números basado en dos dígitos posibles: 0 y 1. Aquí es donde entran las cadenas de dígitos binarios. Cada dígito binario, o “bit”, es un solo 0 o 1, que directamente corresponde a un solo “interruptor” en un circuito. Agregue suficientes de estos “interruptores” juntos y podrá representar más números. Entonces, en lugar de 1 dígito, terminas con 8 para hacer un byte. (Un byte, la unidad básica de almacenamiento, se define simplemente como 8 bits; los conocidos kilobytes, megabytes y gigabytes se derivan del byte, y cada uno es 1.024 veces más grande que el otro. diferencia en lugar de una diferencia de 1000 veces porque 1024 es una potencia de 2 pero 1000 no lo es.)

¿El binario usa más almacenamiento que el decimal?

A primera vista, parece que la representación binaria de un número 10010110 ocupa más espacio que su representación decimal (base 10) 150. Después de todo, el primero tiene 8 dígitos y el segundo tiene 3 dígitos. Sin embargo, este es un argumento no válido en el contexto de mostrar números en la pantalla, ya que todos se almacenan en binario independientemente. La única razón por la que 150 es “más pequeño” que 10010110 se debe a la forma en que lo escribimos en la pantalla (o en papel).

Aumentar la base disminuirá el número de dígitos requeridos para representar cualquier número dado, pero tomando directamente del punto anterior, es imposible crear un circuito digital que opere en cualquier base que no sea 2, ya que no hay un estado entre “encendido” y “off” (a menos que ingrese a computadoras cuánticas … más sobre esto más adelante).

¿Qué pasa con octal y hex?

Octal (base 8) y hexadecimal (base 16) son simplemente un “atajo” para representar números binarios, ya que ambas bases son potencias de 2. 3 dígitos octales = 2 dígitos hexadecimales = 8 dígitos binarios = 1 byte. Es más fácil para el programador humano representar un número entero de 32 bits, a menudo utilizado para valores de color de 32 bits, como FF00EE99 en lugar de 11111111000000001110111010011001.

Computadoras no binarias

Imagina una computadora basada en números de base 10. Entonces, cada “interruptor” tendría 10 estados posibles. Estos pueden representarse por los dígitos (conocidos como “prohibiciones” o “dits”, que significa “dígitos decimales”) de 0 a 9. En este sistema, los números se representarían en la base 10. Esto no es posible con los componentes electrónicos regulares de hoy. , pero es teóricamente posible en un nivel cuántico.

¿Es este sistema más eficiente? Suponiendo que los “conmutadores” de una computadora binaria estándar ocupan la misma cantidad de espacio físico (nanómetros) que estos conmutadores de base 10, la computadora de base 10 podría incorporar considerablemente más poder de procesamiento en el mismo espacio físico. Entonces, aunque la cuestión de ser binario “ineficiente” tiene cierta validez en teoría, pero no en el uso práctico en la actualidad.

¿Por qué todas las computadoras modernas usan binario entonces?

Respuesta simple : las computadoras no fueron diseñadas inicialmente para usar binario … más bien, se determinó que el binario es el sistema más práctico para usar con las computadoras que diseñamos.

Respuesta completa : solo usamos binarios porque actualmente no tenemos la tecnología para crear “conmutadores” que puedan contener de manera confiable más de dos estados posibles. (Las computadoras Quantum no están exactamente a la venta en este momento). Se eligió el sistema binario solo porque es bastante fácil distinguir la presencia de una corriente eléctrica de una ausencia de corriente eléctrica, especialmente cuando se trabaja con billones de tales conexiones. Y el uso de cualquier otra base numérica en este sistema es ridículo, porque el sistema tendría que convertir constantemente entre ellos. Eso es todo al respecto.

Las primeras computadoras fueron, de hecho, construidas usando el sistema decimal. ENIAC es un ejemplo notable. Dejamos de usar el decimal porque las máquinas decimales requieren una gran cantidad de circuitos complejos para representar números y manejar la lógica. El binario ofrece varias ventajas, ya que solo requiere interruptores y cualquier valor de tamaño se puede representar en binario fácilmente.

Las máquinas decimales se produjeron por primera vez como extensiones naturales de máquinas sumadoras mecánicas con las que las personas de la época estaban familiarizadas. Tomó tiempo para que la ingeniería y el diseño eficiente de las computadoras se hicieran cargo.

En cuanto a por qué no enseñamos a los niños el código binario directo es la misma razón por la que no les enseñamos esto a los adultos: es ineficiente de hacer y mantener a gran escala. No quiere decir que a los niños no se les enseñe el sistema binario u otros sistemas numéricos; son. Pero usualmente en un punto donde tienes algunas habilidades matemáticas abstractas. El binario no ofrece ventajas más allá de comprender cómo una máquina representa valores y aprender la lógica booleana.

Solo se usaba directamente el binario en la mayoría de los primeros días de las computadoras. Rápidamente llevó a la invención del lenguaje ensamblador y los lenguajes de programación de alto nivel. Binario es demasiado ineficiente y muy difícil de entender en cualquier cosa más allá de la escala más pequeña.

Vi esta imagen aquí en Quora hace un tiempo:


Entonces … qué base usas es principalmente una función de tu fisiología. Los machos podrían usar la base 11, donde habría un símbolo adicional (y aún se llamaría base 10), pero esto dificultaría el conteo para las hembras, y sería engorroso si usas pantalones.

Sobre cómo hacer que las computadoras usen el sistema decimal, esto las haría innecesariamente complicadas: tendrían que ser capaces de distinguir entre diferentes niveles de voltaje en lugar de simplemente “es alto-bajo / bajo”, aunque en qué base haces tu Las matemáticas son algo irrelevantes (las respuestas son las mismas). Sin mencionar que hacer matemáticas de forma electrónica en la base 2 es bastante trivial, es solo un grupo de transistores.

Además, no es como si tuvieras que traducir entre binario y decimal a mano: la computadora está perfectamente preparada para esa tarea. En el raro caso de que quiera leer / escribir directamente en binario, es mejor usar un sistema que sea una potencia de dos para facilitar la conversión, por ejemplo, octal o hexadecimal (octal, oí, se usó hace mucho tiempo en una galaxia muy, muy lejana (la elección moderna es hexadecimal). La razón es que con octal cada tres dígitos binarios corresponde a un octal, y no necesita hacer la conversión larga (con la división, los residuos y demás): puede convertirlos uno por uno y el resultado será correcto. . Lo mismo ocurre con el hexadecimal, pero allí obtiene 4 dígitos binarios (bits) para 1 dígito hexadecimal (lo cual es muy conveniente: un byte es solo 2 dígitos hexadecimales, de 00 a FF, en lugar del mucho más largo de 00000000 a 11111111).

A menos que se pueda agregar más dedos, la opción que requiere el menor corte de dedos es en realidad octal, pero no estaría alineado a un byte y le faltarían un par de dedos.

Bueno, todo se reduce al ‘hardware’. Un interruptor típico tiene 2 estados: encendido y apagado. En términos de electrónica, es más fácil y más eficiente percibir la presencia o ausencia de una señal eléctrica.

Digamos, por ejemplo, usted y yo estamos sentados en un parque, escuchamos a un petardo explotar. Ambos estaremos de acuerdo en que hubo un sonido fuerte. Pero es posible que los dos no estemos de acuerdo con la intensidad del sonido, porque las capacidades auditivas varían de persona a persona. Igual es el caso de los sistemas informáticos, los transistores dentro de la computadora pueden detectar mejor la presencia o ausencia de voltaje, en lugar de detectar la magnitud de la misma. Diferentes sistemas informáticos o digitales debido a su hardware interno diferente pueden tener variaciones mínimas en su nivel de voltaje, pero todos estarán de acuerdo sobre la presencia o ausencia de la misma señal.

Para obtener una visión detallada de esto, es posible que desee consultar este enlace. ¿Por qué 1 y 0? – theembeddedguy.com

Las computadoras se basan en binarios porque los electrónicos (y específicamente los transistores) tienen dos estados estables: encendido (1) y apagado (0). Llamamos a esos “bits”.

Cada número puede ser representado por una cadena de bits. Como cada bit tiene dos estados, cada bit adicional duplica el rango de números que pueden representarse con todos los bits. Cada nuevo bit es el doble del valor del bit anterior (también es la suma de todos los valores de bit anteriores más uno). Eso significa que los valores de 8 bits (un byte, o más específicamente, un octeto) se podrían representar como: 1, 2, 4, 8, 16, 32, 64, 128. En bytes “Big Endian”, el bit más pequeño está a la derecha, por lo que esos valores se usan realmente al revés. Para convertir los bits a decimales, agregue los valores de los bits que están “en” (que tienen un valor de 1 en lugar de 0).

Por ejemplo, hay cuatro combinaciones de dos bits (2 * 2), que parecen: 00, 01, 10, 11. El valor decimal de ’00’ es 0, exactamente como usted esperaría. El valor decimal de ’01’ es 1 (el bit 1 está a la derecha). Mientras que el valor decimal de ’10’ es 2 (2 + 0), y ’11’ es 3 (2 + 1). Como puede ver, cuando todos los bits están desactivados, el valor es 0. Es por eso que las computadoras comienzan a contar desde cero, cuando las personas generalmente comienzan a contar desde uno.

Binary tiene algunas otras propiedades interesantes para un sistema de conteo. Solo necesita marcar el bit menos significativo para determinar si un número es par o impar (porque su valor es 1, y todas las potencias de 2 son, de lo contrario, incluso). Se puede introducir un “bit de signo” en el bit más significativo para denotar números negativos, aunque esto reduce a la mitad el rango de valores que se pueden representar (la diferencia entre enteros “con signo” y “sin signo”).

Si una computadora pudiera almacenar información en más de dos estados estables, entonces su sistema de conteo podría tener una base más alta (donde binario es la base 2, y los humanos típicamente cuentan en la base 10). Podrías codificar más información en menos bits. La computación cuántica se basa en un qubit (que a través de algunas propiedades extrañas e interesantes puede almacenar hasta dos bits de información).

La primera computadora habría sido el motor analítico de Babbage, si lo hubiera construido. Era totalmente mecánico y usaba números de base estándar 10.

Igualmente, tengo una máquina sumadora:

Si bien no es una computadora, realiza una de las funciones más básicas de los circuitos de computadora, que es sumar números. También lo hace en base 10.

En electrónica digital, utilizamos binarios. En realidad, existen algunas razones para esto, pero la más simple es que es el formato más fácil de trabajar y almacenar, y el formato más sencillo para realizar operaciones.

En binario, un “bit” es “0” o “1” – “apagado” o “encendido”. Sin embargo queremos pensar en ello. Luego, las computadoras pueden operar en grupos de bits, generalmente en la actualidad agrupados en base a potencias de 2. Tradicionalmente, la cantidad de bits que el procesador maneja de forma nativa se conoce como el “tamaño de palabra”. Los primeros microprocesadores fueron de 4 bits, es decir, trabajaron en números de 4 bits que serían de 0 a 15 en decimal. Pronto aparecieron microprocesadores de 8 bits, 16 bits y luego 32 bits, y ahora 64 bits es estándar. En computadoras más grandes, se han utilizado varios tamaños de palabra y algunos no se basan en potencias de dos. Se han creado computadoras de 36 bits e incluso de 60 bits.

Pero, ¿por qué binario? Porque es la forma más sencilla de almacenar información, y con circuitos muy simples podemos construir “puertas”.

Una compuerta toma entradas binarias (o una entrada) y las combina en una única salida basada en una lógica determinada, que normalmente mostramos en una “tabla de verdad”. Los explicaré en términos humanos aquí.

La puerta más simple es la puerta NO, también conocida como inversor. Tiene una sola entrada y simplemente da salida a lo contrario de la entrada. Cada puerta tiene un símbolo:

Su tabla lógica se ve así:

entrada -> salida
0 -> 1
1 -> 0

La siguiente es la compuerta OR con dos entradas: si una de las entradas es “1”, la salida es “1”. Si ambas entradas son “0”, entonces la salida es “0”.

0,0 -> 0
1,0 -> 1
0,1 -> 1
1,1 -> 1

Luego tenemos la puerta AND que es similar, pero solo genera un “1” si ambas entradas son “1”.

0,0 -> 0
1,0 -> 0
0,1 -> 0
1,1 -> 1

Me detendré aquí para notar que estas puertas de múltiples entradas pueden tener más de dos entradas, usted puede averiguar fácilmente cómo se extienden estas tablas en ese caso. También es importante mencionar que las puertas OR y AND se pueden apilar, por ejemplo, si necesita una entrada OR de tres entradas, simplemente coloque otra puerta OR que lleve a una entrada de otra puerta OR.

Hay otras puertas que pueden construirse a partir de éstas y son útiles por derecho propio. Los más comunes son NAND y NOR, y también hay XOR. NAND es “NO Y”, mientras que “NOR” es “NO O”. Cualquiera de las puertas se puede crear técnicamente desde la puerta básica (AND u OR) con una puerta NOT en la salida. Puede tomar las tablas de verdad anteriores e intercambiar “0” y “1” en el lado de salida.

Los símbolos para estas puertas tienen un pequeño círculo en la salida para indicar que están invertidas:

XOR es su propia bestia. Es sinónimo de “OX exclusivo”. Tiene una salida muy diferente a las otras puertas. Da salida a “1” si solo una entrada es “1”. Entonces, ambos ceros o ambos en la entrada darán como resultado un “0”.

0,0 -> 0
1,0 -> 1
0,1 -> 1
1,1 -> 0

Esa es una visión bastante centrada en el ser humano, ya que comencé con NOT, OR y AND. En realidad, la puerta de entrada múltiple más simple es la puerta NOR. NOR es “NO O”, es decir, una compuerta OR con una compuerta NO en la salida, pero también puede crearse colocando dos compuertas NO en las entradas de una compuerta AND. Aquí está la tabla de verdad:

0,0 -> 1
1,0 -> 0
0,1 -> 0
1,1 -> 0

Lo bueno de las puertas NOR es que se pueden combinar para hacer cualquier otra puerta. Si solo tienes un tipo de puerta que puedes usar, hazlo NOR. El ejemplo más simple: une las entradas y tienes una puerta NO.

Entonces, ¿qué tienen que ver estas puertas con cualquier cosa? Me alegra que hayas preguntado.

La función más básica de una computadora es la adición. Digamos que quiero añadir dos dígitos binarios. Eso significa que tengo dos entradas y necesito una pieza de circuito que arroje el resultado. Llamaré a eso una media sumadora binaria. Pensemos en lo que hace.

Si ambos dígitos de entrada son 0, el resultado es 0. Si agregamos “0 y 1” o “1 y 0”, el resultado es 1. Y si agregamos “1 y 1”, el resultado es “2”.

Pero “2” no es binario. Entonces, lo que realmente obtenemos es “10”, que es binario para “2”. El dígito izquierdo es el dígito “llevar”, y el dígito derecho es el “resultado”.

Así que nuestra tabla de verdad no es tan simple como la anterior, porque tenemos un posible dígito adicional.

0,0 -> 0
0,1 -> 1
1,0 -> 1
1,1 -> 0 (con un “carry”)

Ahora, mira de cerca. Acabo de hacer un XOR. ¿Qué tal el dígito de acarreo? Agreguemos eso a nuestra tabla de verdad:

0,0 -> 0 (llevar 0)
0,1 -> 1 (llevar 0)
1,0 -> 1 (llevar 0)
1,1 -> 0 (llevar 1)

Si miras la columna “carry”, es una puerta AND. Así que puedo “agregar” dos dígitos binarios ejecutando las entradas a través de dos puertas paralelas: una puerta XOR y una puerta AND. Si hago eso, la salida será el dígito del resultado y un dígito de acarreo.

Adder de media (electrónica)

¿Pero qué hacemos con el acarreo? Aquí es donde se pone divertido. Tenga en cuenta que llamé a esa cosa “media sumadora”. Ese es un término divertido, pero un “sumador completo” también consideraría el dígito de acarreo de la columna a la derecha de la misma, al igual que agregaríamos números en columnas en papel. Esta es una tabla de verdad más complicada:

0,0,0 -> 0 (llevar 0)
1,0,0 / 0,1,0 / 0,0,1 -> 1 (llevar 0)
1,1,0 / 1,0,1 / 0,1,1 -> 0 (llevar 1)
1,1,1 -> 1 (llevar 1)

Vamos a analizar eso. Si nuestro bit de acarreo de entrada es 0 y ambas entradas son 0, entonces la suma y el acarreo son 0. Si tenemos cualquiera de los tres bits de entrada configurados en 1, obtenemos la suma de 1 con 0 transportado. Si dos bits de entrada se establecen en 1, obtenemos la suma de 0 con 1 transportado. Y si las tres entradas son 1 obtenemos una suma de 1 con un bit de acarreo de 1.

Adder completo

Si bien eso parece complicado, un sumador completo se puede construir con 5 puertas, como se muestra en el enlace.

Puede alinear sumadores completos en una fila, con la salida de acarreo de cada columna alimentando la entrada de acarreo de la columna a su izquierda. Este es un sumador de 4 bits:

Para una computadora de 8 bits, necesita 8 sumadores completos, etc.

El último bit de arrastre anterior, C4, puede considerarse “desbordamiento”, o la computadora puede usarlo para alimentar otra operación de adición. Por lo general, se establece como una marca que puede ser detectada por la computadora o utilizada en operaciones subsiguientes (agregar con acarreo), lo que facilita que una CPU de 8 bits realice operaciones matemáticas de 16 bits con dos operaciones, matemáticas de 32 bits con 4 operaciones, etc.

Una CPU normal tiene una matriz de sumadores completa como la que acabo de describir, junto con otras operaciones, como una matriz XOR, un modificador de bits y quizás incluso las matrices AND y OR. Las entradas se introducen en todas las matrices (normalmente), y la operación determina qué salida se utilizará.

En arquitecturas avanzadas, la salida se puede dirigir a un registro o incluso a una ubicación de memoria. En arquitecturas más simples, la salida siempre termina en un registro acumulador.

Eso es sólo añadir, por supuesto. La resta puede ser manejada por el mismo circuito usando un truco llamado “dos complementos”. Si puedo “xor” y “agregar”, entonces puedo restar fácilmente. La multiplicación es un poco más complicada. Siempre que tenga un poco de cambio, un sumador y la capacidad de probar un solo bit, puedo multiplicarlo fácilmente en un simple bucle. Igualmente con la división.

Y usando la división, puedo convertir binario en números decimales. Comienzo con mi número binario y lo divido por 10. El resto es el dígito más a la derecha. Luego divido el resultado entre 10 nuevamente, con los restos subsiguientes ante el primer resto. Cuando mi resultado es 0, he terminado.

La matemática de punto flotante es un poco más complicada, pero generalmente sigue los mismos conceptos que la matemática de enteros. La única diferencia es que cada número incluye un “exponente”. En decimal, eso sería el equivalente aproximado de representar 1533 como [math] 1.533 \ times 10 ^ 3 [/ math].

Puede hacerse una idea del primer procesador de 4 bits de Intel, el 4004, aquí:

Intel 4004 – Proyecto 45 Aniversario

Entonces, la razón por la que usamos el binario es porque es fácil construir un procesador completo basado en señales digitales (encendido o apagado) comenzando con partes pequeñas que funcionan juntas y se pueden combinar en circuitos cada vez más complejos que realizan cálculos. Solo utilizamos el decimal cuando interactuamos con humanos, lo que en el mundo de la computación es extraordinariamente raro. En el trabajo que hago, es quizás 1 en 10 mil millones de operaciones que cambian de binario a decimal para mostrar. Y hacerlo es bastante trivial con las CPU modernas.

Editar:

Otra cosa que mencionar es que nuestra comprensión de las puertas lógicas significa que algo como el motor analítico podría diseñarse incluso más ahora, ya que podemos construir puertas físicamente.

He visto un par de conceptos para puertas lógicas físicas. Uno usaba bolas de billar (esto era teórico) y tubos.

Otra que apareció en una revista hace años como una broma de April Fools describía una isla donde las puertas lógicas se construían en cajas con cuerdas que se extendían desde ellas. Tirando de la cuerda representada “1” y una cuerda sin tensión fue “0”. Mostraron cómo hacer un conjunto completo de compuertas lógicas físicas que, en teoría, podrían unirse para construir calculadoras mecánicas más complejas.

Véase también aquí:

¿Por qué la computadora entiende solo el lenguaje de ‘1’ y ‘0’?
¡Bueno! Debe haberse preguntado por qué la computadora entiende el lenguaje de 1s y 0s? ¿Por qué no entiende nuestro idioma?
¿Para eso, necesitarás un vistazo a lo que es una computadora?
“La computadora es una máquina electrónica que cambia datos y cifras brutas a una forma significativa”.
Así que ahora que sabes qué es una computadora, entenderás por qué diablos una computadora habla el idioma de 1s y 0s. Pero para aquellos que todavía no saben qué es una computadora, se los explicaré brevemente.
Así que aquí va!

  1. Todos los días, verifica su cuenta de Facebook, Twitter, MySpace, LinkedIn, Google+, a través de su computadora. Durante ese tiempo, su computadora envía y recibe muchas cosas que usted, dueño de sí mismo, pensaría “¿Qué diablos es esto?”. Pero tu computadora cambia todo eso a algo que puedes entender fácilmente.
  2. Por la mañana, enciendes tu televisor y ves noticias, dibujos animados, películas o lo que quieras. Su televisor recibe ondas de radio, que cambian a imagen.
  3. Su teléfono suena; lo levanta y comienza a hablar con su amigo, familiar o colega. Durante su conversación, su móvil cambia sus palabras habladas a señales eléctricas, que viajan hasta el receptor, y luego su teléfono cambia las señales a Sonido de nuevo, y viceversa.

Espero que ahora sepas lo que es una computadora. Así que volvamos al tema.
Como dije anteriormente, “La computadora es una máquina electrónica” , tiene muchos circuitos integrados. cuando presiona la tecla ‘A’, su teclado envía una combinación de 1s y 0s a través de un paquete de 7 cables.
Bien, ahora, ¿qué sucede realmente cuando presionas la tecla ‘A’?
Lo que sucede es que su computadora tiene un código estándar para cada carácter, como ‘A’, por lo que cuando presiona la tecla ‘A’, su código ‘1000001’ se envía a la computadora con su teclado. Lo que hace es enviar corriente eléctrica. Hay siete cables para tu teclado. El código estándar de ‘A’ es ‘1000001’. Su teclado envía una corriente eléctrica a través del primer cable (que representa 1), luego no hay corriente en absoluto a través del segundo, tercer, cuarto, quinto y sexto cable (que representa 0), y luego, una corriente eléctrica nuevamente a través del séptimo cable . WALLA !!! ¡Acabas de enviar el código de ‘A’ a tu computadora!
Ahora la pregunta es ¿cómo entiende su computadora el código que acaba de enviar?
Como dije antes, la computadora tiene muchos circuitos integrados, cuando envías las señales eléctricas, éstas se dirigen a estos circuitos. La computadora no puede entendernos, pero pueden entender que el circuito ‘tal-en-tal’ tiene corriente que pasa a través de él. Entonces, cuando su teclado envía las señales eléctricas, en ese momento, la computadora no recibe el código. La computadora dice: ” De acuerdo, el circuito número uno recibió una corriente eléctrica, por lo que significa uno. El circuito número dos no recibió ninguna corriente, por lo tanto, debe ser cero … y el número siete recibió una corriente eléctrica, lo que significa 1 . Ahora es
1, 0, 0, 0, 0, 0, 1. Eso significa que el usuario está intentando enviarme este código. Lo mejor es buscarlo en mi diccionario y mostrarlo al usuario “.
Eso es más o menos lo que sucede. Su computadora tiene códigos dentro de ella. Cuando recibe un código, coincide con el código en su diccionario. Cualquier código de carácter coincide con el código enviado por el usuario, la computadora entiende lo que el usuario está tratando de hacer.
En caso de que todavía estés confundido, iría como:

  1. Usted presiona la tecla.
  2. Su teclado tiene un IC en su interior que envía la combinación respectiva de corriente.
  3. Su computadora obtiene la combinación de corriente.
  4. Cambia cada ‘SÍ QUE LA CORRIENTE ESTÁ PASANDO’ a ‘1’ y ‘¡NO! NO HAY CORRIENTE AQUÍ ‘a’ 0 ‘.
  5. Luego se ve la combinación de 1s y 0s en su diccionario.
  6. Luego le muestra el carácter, cuyo código coincide con el código que acaba de enviar.

Por eso es que una computadora entiende el lenguaje binario. Idioma de 1s y 0s.
Si presionas la tecla ‘B’, enviará el código ‘1000010’.
Y para ‘C’, sería ‘1000011’.
Lo que realmente estás tratando de hacer es enviar el código que luego coincide en su diccionario. Y para eso, envías corrientes eléctricas.

Las decisiones se toman utilizando puertas lógicas simples con lógica de encendido / apagado. Son dos estados, por lo tanto binarios. El término lenguaje binario en las computadoras realmente ya no se aplica. Así fue como la gente escribía código para sistemas en realidad escribiendo a mano todos los unos y ceros e ingresándolos en una computadora usando una serie de interruptores. Fue reemplazado por un lenguaje ensamblador que era un lenguaje simbólico que un ensamblador convirtió en binario. Luego, los compiladores convirtieron los lenguajes de alto nivel como C y Pascal en ensamblador y finalmente el ensamblador a binario. Era solo el “lenguaje” cuando los humanos lo escribían a mano.

Las neuronas en su cerebro que también producen el habla están activadas o desactivadas, se están disparando o no. El inglés, ya sea hablado, escrito, leído u oído, es todo interpretado por las neuronas binarias en su cerebro.

Puede haber varias razones para esto. Aquí hay algunos:

  1. Almacenamiento: Es más fácil almacenar 0s y 1s en comparación con 1,2,3. Un 0 es un mínimo y un 1 es un alto. Es mucho más caro almacenar varios niveles.
  2. Simplicidad de hardware: la mayoría de nuestros conmutadores tienen dos estados. Actualmente no utilizamos interruptores que tengan varios estados o niveles. Además, es mucho más fácil separar un 0 de un 1 que un 1 de un 2 de un 3.
  3. Sencillez y escalabilidad: todo se puede representar como 0s y 1s. Ya sea una imagen, un carácter o un entero. Es la más pequeña de las bases. Imagina mapear tipos a decimales. ¿Qué tan confuso sería eso? Si introduce un nuevo tipo, sería más fácil asignarlo a números binarios que a números decimales.

Primero, para ser claros, a pesar del uso de la cultura pop, no existe el “lenguaje binario”. En su lugar, las computadoras almacenan datos usando interruptores de encendido y apagado (bits), que describimos como 1s y 0s.

Esa distinción es importante, por la misma razón por la que un libro no está “hecho de letras”. Las letras resultan ser la forma en que almacenamos los conceptos.

Ciertas cosas que almacenamos son instrucciones. El microprocesador usa lo que equivale a cables reales para decidir qué hacer a continuación (qué circuitos activar). Estoy simplificando demasiado la forma en que funciona, pero piénselo como el interruptor automático de su casa. El mío tiene un interruptor para cada habitación, dos para los grandes. Si me entregan el número 21, es posible que lo apague todo, excepto la mitad frontal de la sala de estar, el área de lavado y el baño, por ejemplo (según los bits que estén “encendidos”). Ese patrón determina lo que puedo hacer en la casa hasta que llegue el siguiente número (conjunto de señales).

No es un “lenguaje”, solo una forma de describir decisiones, que es todo lo que una computadora realmente está haciendo y lo hace muy bien.

Los circuitos internos dentro de un procesador o cualquier circuito dentro de la CPU utilizan señales eléctricas. Estas señales eléctricas consisten en una serie de voltajes altos y bajos que se representan como 1 y 0 para mayor facilidad.

Las combinaciones o series de estas señales constituyen una acción de control o algún proceso en el sistema. Estos son los comandos por los que opera la máquina.

Dado que es difícil dar comandos en un lenguaje binario lleno de 1 y 0, los comandos en lenguaje de alto nivel tienen palabras en inglés. Estas palabras se convierten en señales eléctricas mediante una serie de procesos que implican compilación, interpretación, montaje, enlace y carga.

Por lo tanto, indirectamente las computadoras usan solo lenguaje de alto nivel. Tal vez llegará un momento en que las computadoras entiendan directamente el idioma inglés.

Los transistores son “amplificadores” si se usan en diseño analógico y “interruptores” si se usan en diseño digital. Si está diseñando un transistor como interruptor, puede simplificar muchas cosas. Lo diseñas para que el transistor esté completamente activado o desactivado. No te importa cómo se comporta el transisto en el medio. Si está utilizando un transistor como amplificador, le importa cómo se comporta el transistor entre todo encendido y apagado. Quieres que sea lineal. Y tienes que ser más cuidadoso en tu diseño para que se comporte linealmente. Algunos han intentado diseñar puertas de lógica trinaria, pero el costo y la complejidad hacen que sea una opción peor que la lógica binaria.

Las antiguas calculadoras mecánicas podrían usar los engranajes como “lógica” y podrían hacer cálculos matemáticos en la base diez, pero básicamente controlas eso por la cantidad de dientes que colocas en tus engranajes. Agregar algunos dientes más no fue un gran problema, por lo que las antiguas cajas registradoras mecánicas hicieron matemáticas en la base 10.

Por lo tanto, PUEDE diseñar lógica en bases distintas de 2, pero con transistores es más fácil de diseñar en binario.

Como han indicado otras respuestas, es más fácil implementar dos voltajes posibles, y el circuito en estos es más simple.

Las computadoras hacen una gran cantidad de cálculos, pero relativamente pocas entradas y salidas de números decimales ordinarios a personas. Como tal, es tremendamente más eficiente trabajar con números binarios y hacer la conversión ocasional hacia y desde números decimales, en lugar de trabajar directamente con números decimales.

Considere algunos cálculos al final del sobre sobre la suma de dos números. La ingeniería del mundo real puede hacer que estos números sean inexactos, pero son solo para darle una idea aproximada.

Una tabla de sumas como la que se enseña en la escuela para los dígitos decimales es una cuadrícula que tiene 10 x 10 = 100 posibilidades que deben calcularse con precisión, mientras que para los dígitos binarios la tabla de sumas tiene solo 2 x 2 = 4 posibilidades. Entonces el problema es 25 veces más complejo para los dígitos decimales.

Esto es una simplificación, así que vamos más lejos. Normalmente estaremos encadenando dígitos para formar números más grandes, por lo que si estamos agregando, necesitamos apoyar los dígitos de carga como lo enseñaron en la escuela. Un dígito de acarreo resultante de agregar dos dígitos (y potencialmente un acarreo de una columna anterior) siempre será solo 0 o 1, independientemente del sistema numérico. Así que los dígitos decimales tienen una complejidad de 2 x 10 x 10 = 200 posibilidades, y los dígitos binarios tienen una complejidad de 2 x 2 x 2 = 8. Aún así, 25 veces más complicado.

Pero un dígito binario puede contener menos información que un dígito decimal, por lo que necesitaríamos más dígitos binarios para hacer la misma suma. Tomemos un ejemplo que sea favorable a la suma decimal, y veamos que aún se pierde.

Si tenemos dos números entre 0 y 9999 que deseamos agregar, eso es 4 dígitos decimales por número, y resulta ser 14 dígitos binarios. Necesitamos 4 de estos sumadores de dígitos para números decimales y 14 de ellos para binarios. Por lo tanto, la complejidad total de agregarlos sería 4 x 2 x 10 x 10 = 800 para la suma decimal, y 14 x 2 x 2 x 2 = 112 para la suma binaria. El sumador decimal sigue siendo 7 u 8 veces más complejo.

Hay todo tipo de simplificaciones, suposiciones y omisiones en los cálculos anteriores, y no estoy afirmando que estos números sean exactos. Pero debería darle una idea de algunas de las razones por las que el circuito de cálculo binario es más simple.

En particular, para resumir, es más fácil usar sumadores binarios más simples, aunque necesitará tener más de ellos.

Gracias por A2A. Pero no creo que sea la persona adecuada para explicarlo en profundidad. Puede haber múltiples formas de explicar: se puede explicar matemáticamente utilizando el modelo de máquina de Turing o algo así.

También en cuanto al hardware, es mucho más fácil construir un circuito de dos estados (binario) en comparación con generar 10 (decimales) voltajes diferentes. En los circuitos digitales, los bloques de construcción básicos son los transistores y cuando están ENCENDIDOS obtenemos un ‘1’ o ‘alto’ y obtenemos ‘0’ o ‘bajo’ cuando está apagado. Muy parecido a un interruptor. Pero en el caso del sistema decimal, la máquina necesitará generar 10 voltajes diferentes correspondientes a cada número, lo que no es muy fácil y aumentará enormemente la complejidad del circuito.
La otra razón en la que puedo pensar es en la inmunidad al ruido. Los circuitos digitales son muy inmunes al ruido y hay una razón para ello. Decimos que en los circuitos digitales 5v corresponden a ‘1’ / ‘high’ y 0v como ‘0’ / ‘low’. Pero en realidad hay un rango de voltajes que se toma como alto y un rango que se tomará como lógica baja. Por ejemplo, cualquier cosa entre 0v a 0.8v puede tomarse como lógica ‘low / 0’ y voltajes entre 2.4v a 5v como lógica ‘high / 1’. Esta convención ayuda mucho en la inmunidad al ruido: suponga que una señal lógica alta, idealmente a 5v, se distorsiona debido al ruido y se reduce a 4,5 v, pero aún así está dentro del rango de lógica ‘high / 1’ y, por lo tanto, se interpretará como ‘1’ Solo eliminando el efecto del ruido. Pero si tomamos 10 voltajes de 0 a 9 en nuestra computadora, el rango de cada nivel lógico para tolerancia de ruido disminuirá, por supuesto, podemos argumentar que podemos tomar voltajes en un intervalo como 0v, 10v, 20v …… .so a 90v para crear una brecha más grande entre cada estado y tener una inmunidad al ruido razonable, pero nuevamente creará un nuevo problema de generación y control de tales altos voltajes.

tenga en cuenta
1: los circuitos digitales también pueden usar (3.3v / 1.8v / 2.5v para representar niveles lógicos como en teléfonos celulares, nivel de procesador, tarjetas de memoria, módulos RAM, etc.).

2: A veces también consideramos un tercer estado en los circuitos digitales, llamado alta impedancia o alto Z, es algo así como que el cable no se conecta a 5v ni a 0v.

Las computadoras hacen mucho más trabajo además de contar, mucho trabajo basado en la lógica. Y la lógica, especialmente la forma Boolen en la que se basan, es una lógica binaria. Entonces, uno puede construir circuitos que coincidan con las expresiones booleanas uno por uno (un resultado “mágico” que me atrapó desde el primer día), y los comportamientos de estas expresiones y los circuitos correspondientes se pueden razonar simbólicamente y se puede demostrar que son correctos (o no) sin ambigüedad. No hay un equivalente decimal que sea tan fácil de descomponer y automatizar para usar para este propósito. Por lo tanto, la representación binaria de los números sigue naturalmente: los circuitos que los manipulan pueden demostrarse como correctos incluso antes de que se construyan, y de una manera que es (a mi entender, naturalmente) se comprende en la mente humana. Cualquier otra base numérica daría lugar a una explosión de términos e interacciones haciendo que el seguimiento y la demostración de la lógica sean inmanejables, o al menos mucho más propensos a errores. Además, a los números en sí no les importa. Un número es un número y eso es todo. Hasta que llegue el momento de imprimirlos para que los leamos. Y el algoritmo para convertir de binario a decimal para eso es trivial CS 101.

Algunas máquinas tempranas realmente tenían números decimales. Pero son más caros y más difíciles de depurar que los binarios. Por ejemplo, cuando cuatro bits de un número binario pueden representar valores distintos, aún se necesitan cuatro bits en un circuito decimal para representar solo 10 valores distintos. Perdiendo cuatro estados perfectamente buenos por cada dígito. Además de la lógica para hacer la aritmética básica y restringir sus valores al rango decimal, agrega aún más puertas lógicas que cuestan y hacen que el circuito sea un poco más difícil de leer.

El problema (o uno de los problemas) con lenguajes naturales como el inglés es que son ambiguos. Muchas oraciones en inglés no tienen un significado bien definido. La tarea de entender el significado de una oración en inglés no siempre es solucionable. Esa es una de las razones por las cuales los humanos se malinterpretan entre sí todo el tiempo.

Si algo no tiene un significado bien definido, entonces una computadora no puede entenderlo. En el mejor de los casos, la computadora puede adivinar. Y los programadores no quieren involucrar más conjeturas que las necesarias.

Las computadoras pueden procesar la información solo en forma de niveles de voltaje.

Para cada nuevo símbolo o letra o número, necesitará un nivel de voltaje diferente.

En la práctica, no es posible mantener los niveles de voltaje para cada tipo de símbolo, letra y número.

En binario, solo hay dos niveles de voltaje, es decir, 0 V y 5 V y, por lo tanto, el sistema binario resulta ser el más simple.

Es por eso que las computadoras cuentan en binario.