¿Por qué las computadoras usan el sistema de números binarios (0,1)?

31

¿Por qué las computadoras usan el sistema de números binarios (0,1)? ¿Por qué no usan el Sistema de números ternarios (0,1,2) o cualquier otro sistema de números?

Rai Ammad Khan
fuente
99
Esta es una pregunta sobre ingeniería eléctrica. Aparentemente, las puertas binarias son más fáciles de implementar. IIRC alguna computadora ternaria había sido construida en algún momento.
Yuval Filmus
77
¿Qué investigación has hecho? Cuando escribo el título de su pregunta en Google, obtengo resultados de búsqueda que brindan varias respuestas a su pregunta. Además, el artículo de Wikipedia sobre números binarios y código binario tiene una breve explicación. Esperamos que haga una gran cantidad de investigación antes de preguntar aquí, y me parece que no ha hecho ni siquiera una investigación básica antes de preguntar. Buscar en Google y Wikipedia es un mínimo.
DW
Las bases más grandes no resultaron útiles en general.
Raphael
@Raphael: Ternary hizo
Mooing Duck
2
Voy a poner esto como un comentario porque ya hay una respuesta aceptada. Es extraordinariamente difícil construir dispositivos electrónicos que discriminen de manera confiable entre diez valores debido a las tolerancias de fabricación. Es relativamente fácil construir dispositivos electrónicos que discriminen entre dos valores. Entonces, la respuesta corta es que las computadoras usan representación binaria para confiabilidad . He escrito una respuesta más detallada para aquellos que pueden preocuparse: bbrown.kennesaw.edu/papers/why_binary.html
Bob Brown

Respuestas:

31

Como estamos en Informática, responderé de esta manera: no lo hacen.

¿Qué queremos decir con "computadora"? Hay muchas definiciones, pero en informática como ciencia, la más común es la máquina de Turing.

Una máquina de turing se define por varios aspectos: un conjunto de estados, una tabla de transición, un conjunto de detención e importante para nuestra discusión, un alfabeto. Este alfabeto se refiere a los símbolos que la máquina puede leer como entrada y que puede escribir en su cinta. (Podría tener diferentes alfabetos de entrada y de cinta, pero no nos preocupemos por eso por ahora).

Entonces, puedo hacer una máquina de Turing con el alfabeto de entrada , o { a , b } , o { 0 , 1 , 2 } , o { , } . No importa. El hecho es que puedo usar cualquier alfabeto que elija para codificar datos.{0,1}{a,b}{0,1,2}{,}

Entonces, puedo decir que es 9, o puedo decir que es 9. No importa, ya que son solo símbolos que podemos distinguir.0001001↑↑↑↓↑↑↓

El truco es que binario es suficiente. Cualquier secuencia de bits se puede interpretar como un número, por lo que puede convertir de binario a cualquier otro sistema y viceversa.

Pero resulta que unario es suficiente también. Puede codificar 9 como 111111111. Esto no es particularmente eficiente, pero tiene la misma potencia de cálculo.

Las cosas se ponen aún más locas cuando se miran modelos alternativos de computación, como el cálculo Lambda. Aquí puede ver los números como funciones. De hecho, puede ver todo como funciones. Las cosas están codificadas no como bits, 0s y 1s, sino como funciones matemáticas cerradas sin estado mutable. Vea los números de la Iglesia para saber cómo puede hacer números de esta manera.

El punto es que, 0s y 1s es un problema completamente específico del hardware, y la elección es arbitraria. La codificación que está utilizando no es particularmente relevante para la informática, fuera de unos pocos subcampos como los sistemas operativos o las redes.

jmite
fuente
¿Qué pasa con la codificación de entrada en máquinas de 2 contadores? Parece importar ¿Estás seguro de que puedes descartar los problemas de codificación tan radical? Y difícilmente estaría de acuerdo en que la complejidad no es un problema; pero, ¿es el cálculo lambda una forma adecuada de abordarlo?
babou
Admito que hay problemas de complejidad cuando usas unary. Pero la elección de binario versus ternario o algo así es algo arbitrario. No es que la elección de la codificación no importe, pero no hay alguna ley que dicte por qué usamos una en particular. Está dictado principalmente por conveniencia o por requisitos de hardware, que están algo fuera de la ciencia computacional.
jmite
1
"Entonces, puedo hacer una máquina de Turing con alfabeto de entrada". Creo que debería escribir "alfabeto de cinta" aquí en lugar de "alfabeto de entrada". La parte interesante es lo que se usa para el cálculo y no para la entrada. Además, no estoy de acuerdo con que el unario sea suficiente. Una TM con alfabeto de cinta unaria es casi inútil, porque la cinta es constante.
Simon S
Con respecto a la última oración: el diseño y el estudio del hardware y la arquitectura de la computadora también son parte de la informática.
Kaveh
2
Es posible que desee agregar el punto de que pasar de unario a binario reduce el tamaño de sus números a su logaritmo, lo cual es una mejora seria, mientras que ir más allá no gana tanto (solo un factor lineal).
reinierpost
23

Algunas otras cosas a considerar:

Parte de la razón para usar un sistema de números binarios es que es el sistema de números de base más baja que puede representar números en espacio logarítmico, en lugar de lineal. Para distinguir de manera única entre números diferentes en unario, la longitud promedio de las representaciones debe ser proporcional a al menos n , ya que solo hay una cadena de longitud k donde k < n ; 1 + 1 + . . . + 1 = n . Para distinguir de manera única entre n números diferentes en binario, la longitud promedio de las representaciones debe ser proporcional a al menos log 2nnkk<n1+1+...+1=nn , ya que hay 2 k números binarios de longitud k ; 1 + 2 + . . . + n + 1log2n2kk. Elegir una base más grande mejora el requisito de espacio por un factor constante; la base 10 le dannúmeros con una longitud de representación promedio delog10n, que eslog1020.3veces la longitud promedio de una representación de base dos para todos losn. La diferencia entre binario y unario es mucho mayor; de hecho, es una función den. Obtienes mucho eligiendo binario sobre unario; obtienes mucho menos al elegir una base más alta, en comparación.1+2+...+n+12=nnlog10nlog1020.3nn

Hay algo de verdad en la idea de que es más fácil implementar la lógica digital si solo tenemos que distinguir dos estados. Las señales eléctricas son analógicas y, como tales, pueden interpretarse para representar tantos estados discretos como desee ... pero necesita un hardware más preciso (por lo tanto, costoso y meticuloso) para distinguir de manera confiable más estados en el mismo rango. Esto sugiere elegir una base lo más baja posible.

Otra consideración potencialmente importante es que, lógicamente, se ha entendido que la lógica involucra dos valores distintos: y f a l s e . Ahora, tenemos lógicas más sofisticadas que esta, pero muchas matemáticas y ciencias aún se basan en nociones bastante fundamentales. Cuando considera que las computadoras se usan para calcular, y que la lógica es importante para el cálculo, sugiere tener un buen soporte para al menos dos estados distintos ... pero la lógica realmente no requiere más que eso.truefalse

Patrick87
fuente
9

Una de las principales razones por las que la mayoría de los circuitos de computadora usan dos estados es que la cantidad de circuitos necesaria para distinguir entre n niveles de voltaje diferentes es aproximadamente proporcional a n -1. En consecuencia, tener tres estados discernibles requeriría el doble de circuitos por señal, y tener cuatro requeriría tres veces más. Triplicar la cantidad de circuitos y solo duplicar la cantidad de información representaría una pérdida de eficiencia.

Tenga en cuenta que hay algunos lugares en las computadoras donde la información se almacena o se comunica utilizando más de dos estados por elemento. En una matriz de memoria flash, cientos o miles de celdas de memoria pueden ser atendidas por un conjunto de circuitos de detección de nivel. El uso de cuatro niveles por celda en lugar de dos cuando se almacena una cierta cantidad de información podría ser más del triple del tamaño de los circuitos de detección de nivel, pero reduciría a la mitad el número de celdas de memoria requeridas. Al comunicarse a través de Ethernet de 100 bases T o más rápido, el costo de los circuitos necesarios para detectar múltiples niveles de señal en el cable probablemente se verá reducido por el costo de tener que usar un cable con más cables o usar cables que puedan manejar más transiciones de señal por segundo sin un nivel inaceptable de distorsión.

Super gato
fuente
9

Existen computadoras cuánticas en los laboratorios de investigación que usan q-bit como la unidad básica de información que puede ser tanto 0 como 1 simultáneamente.
http://en.wikipedia.org/wiki/Quantum_computer

También se han construido computadoras cuánticas ternarias según esta referencia http://en.wikipedia.org/wiki/Ternary_computer

Por lo tanto, es posible construir dispositivos informáticos alternativos que no dependen del sistema de números binarios. Los sistemas de fibra óptica, por ejemplo, usan 0 para las polarizaciones ortoganales oscuras y dos diferentes de luz como 1 y -1.

La razón por la que menciono estas cosas es porque quiero mostrar que aunque los números binarios son suficientes para la computación, existen sistemas numéricos alternativos que pueden usarse para la computación.

El sistema de números binarios es bueno en este sentido, podemos codificar todos los enteros mediante el uso de la representación radix de números. http: // en.wikipedia.org/wiki/Radix Estos valores pueden representar el código ASCII A = 0x41 = 01000001, o el valor podría representar una instrucción de máquina nop = 0x90 = 0x10010000. xZ

Gary D.
fuente
3
Pero todavía están usando un sistema binario, en computación cuántica el estado de superposición no es un tercer valor posible. También arrojar un ejemplo de computación cuántica no es útil para la pregunta formulada.
lPlant
No sabía sobre esto ..
Ali786
"q-bit como la unidad básica de información que puede ser 0 y 1 simultáneamente". Esto no tiene sentido. Los Qubits son fundamentalmente diferentes de los bits normales, ya que representan un valor no discreto (complejo). Son incomparables para todos los fines prácticos.
Lagarto discreto
3

En el corazón de las computadoras digitales, la potencia de procesamiento es un transistor, que funciona como un interruptor. Al aumentar la corriente en la "puerta" del interruptor, permite que la corriente fluya entre el "colector" y el "emisor": el interruptor se enciende. El transistor estará diseñado para funcionar en uno de los dos modos: completamente encendido o completamente apagado ('saturado'), con una división clara de cuáles son esos estados. El transistor puede cambiar entre los dos estados rápidamente, permanecerá en el estado con errores muy limitados.

Este circuito forma la base para dispositivos lógicos, tales como AND, NAND, OR, XOR y otras funciones. La función NAND es la más básica de los bloques de construcción. Estos dispositivos lógicos se ensamblan para proporcionar procesadores que permanecen en un estado predecible, y muchos transistores se pueden empaquetar en un espacio pequeño para proporcionar la funcionalidad necesaria.

Un transistor puede gestionar estados múltiples o variables, pero cuando funcionan de esa manera no producen computadoras "digitales" convencionales: no tienden a permanecer en un estado predecible y son propensos a interferencias, saturación, osculación, etc. tienen aplicaciones limitadas en términos de habilidades computacionales. Los amplificadores operacionales podrían considerarse computadoras analógicas.

peeldog
fuente
-3

Solo usamos binario (1,0) porque actualmente no tenemos la tecnología para crear "interruptores" que puedan contener de manera confiable más de dos estados posibles. (Las computadoras cuánticas no están exactamente a la venta en este momento). El sistema binario se eligió 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 usando cualquier otra base de números en este sistema ridículo, porque el sistema necesitaría convertir constantemente entre ellos. Eso es todo al respecto.

Irfan Khan
fuente
2
Esto es cierto, pero ¿no está todo incluido en las respuestas existentes?
David Richerby