ultima - Binario, Flotadores, y Computadoras Modernas
porque las computadoras usan sistema binario (10)
He estado leyendo mucho sobre flotadores y operaciones de punto flotante procesadas por computadora. La pregunta más grande que veo al leer sobre ellos es ¿por qué son tan inexactos? Entiendo que esto se debe a que el binario no puede representar con precisión todos los números reales, por lo que los números se redondean a la "mejor" aproximación.
Mi pregunta es, sabiendo esto, ¿por qué seguimos usando binarios como base para operaciones de computadora? Seguramente, usar un número base mayor que 2 aumentaría la precisión de las operaciones de punto flotante de manera exponencial, ¿no es así?
¿Cuáles son las ventajas de usar un sistema de números binarios para computadoras en lugar de otra base, y se ha intentado alguna otra base? ¿O es posible?
Básicamente, estamos mapeando un espacio finito a un conjunto infinito de números reales. Así que ni siquiera es un problema de base de todos modos.
Se elige Base 2, como dijo Polinomio, por razones de implementación, ya que es más fácil diferenciar 2 niveles de energía.
O tiramos más espacio para representar más números / aumentar la precisión, o limitar el rango que queremos codificar, o una combinación de ellos.
Hay 2 problemas que surgen del uso de números binarios de punto flotante para representar números reales matemáticos; bueno, probablemente haya muchos más problemas, pero 2 es suficiente por el momento.
- Todos los números de computadora son finitos, por lo que cualquier número que requiera un número infinito de dígitos no puede representarse con precisión en una computadora, independientemente de la base numérica elegida. Así que eso trata con pi, e, y la mayoría de los otros números reales.
- Cualquiera que sea la base elegida tendrá dificultades para representar (finitamente) algunas fracciones. La base 2 solo puede aproximar cualquier fracción con un factor de 3 en el denominador, pero la base 5 o la base 7 también lo hacen.
A lo largo de los años se han construido computadoras con circuitos basados en dispositivos con más de 2 estados. La antigua Unión Soviética desarrolló una serie de computadoras con dispositivos de 3 estados y al menos un fabricante de computadoras de los Estados Unidos ofreció a la vez computadoras con dispositivos de 10 estados para la aritmética.
Sospecho que la representación binaria ha ganado (hasta ahora) porque es simple, tanto para razonar como para implementar con dispositivos electrónicos actuales.
Las computadoras se basan en transistores, que tienen un estado de "encendido" y un estado de "apagado". Esto corresponde a alta y baja tensión. Casi todos los circuitos integrados digitales funcionan de esta manera binaria.
Ignorando el hecho de que los transistores simplemente funcionan de esta manera, usar una base diferente (por ejemplo, la base 3) requeriría que estos circuitos funcionen en un estado de voltaje intermedio (o varios), así como a 0 V y su voltaje de operación más alto. Esto es más complicado y puede ocasionar problemas a altas frecuencias. ¿Cómo puede saber si una señal está haciendo una transición entre 2V y 0V, o en realidad a 1V?
Cuando bajamos al nivel de punto flotante, estamos (como nhahtdh menciona en su respuesta) mapeando un espacio infinito de números hasta un espacio de almacenamiento finito. Es una garantía absoluta de que perderemos algo de precisión. Sin embargo, una ventaja de los flotadores IEEE es que la precisión es relativa a la magnitud del valor.
Actualización: También deberías revisar Tunguska , un emulador informático ternario. Utiliza base-3 en lugar de base-2, lo que da lugar a algunos conceptos interesantes (aunque alucinantes).
No soy ni ingeniero eléctrico ni matemático, así que tenlo en cuenta cuando haga la siguiente afirmación:
Todos los números de punto flotante se pueden representar como enteros.
No soy un EE, así que todo lo que digo a continuación puede estar totalmente equivocado. Pero...
La ventaja del binario es que se mapea muy limpiamente para distinguir entre los estados de encendido / apagado (o, más precisamente, de alto / bajo voltaje) en circuitos reales. Intentar distinguir entre múltiples voltajes supondría, en mi opinión, un poco más de un desafío.
Esto puede salir completamente por la ventana si las computadoras cuánticas salen del laboratorio.
Primero que todo: no puedes representar todos los números reales incluso cuando usas, por ejemplo, base 100. Pero esto ya lo sabes. De todos modos, esto significa: La inexactitud siempre surgirá debido a que "no se pueden representar todos los números reales".
Ahora hablemos de " ¿qué pueden ofrecerte las bases más altas cuando haces matemáticas?": Las bases más altas no aportan exactamente ''nada'' en términos de precisión. ¿Por qué?
Si desea usar la base 4, entonces un número de 16 dígitos de la base 4 proporciona exactamente 4 16 valores diferentes.
Pero puede obtener el mismo número de valores diferentes de un número base de 32 dígitos 2 (2 32 = 4 16 ).
Como ya dijo otra respuesta: los transistores pueden estar encendidos o apagados. Por lo tanto, sus nuevos registros de base 4 deben ser una abstracción sobre (base 2) ''bits'' ON / OFF. Esto significa: Use dos ''bits'' para representar una base de 4 dígitos. Pero aún obtendrá exactamente 2 niveles de N al gastar N ''bits'' (o N / 2 base-4 dígitos). Solo puede obtener una mayor precisión gastando más bits , no aumentando la base . La base en la que "imagina / abstrae" sus números (p. Ej., Cómo printf
puede imprimir estos números de base-2 en base-10) es realmente una cuestión de abstracción y no de precisión.
Sí, hay / ha habido computadoras que usan otras que no son binarias (es decir, que no son representaciones de base 2 y aritmetic): wikipaedia .
Los diseñadores de sistemas de computación han examinado muchas alternativas. Pero es difícil encontrar un modelo que sea tan simple de implementar en un dispositivo físico como uno que use dos estados discretos. Así que comience con un circuito binario que es muy fácil y barato de construir y trabajar para una computadora con operaciones complejas. Esa es la historia de la binaria en pocas palabras.
Se reduce a sacar el máximo provecho del área de chips disponible.
Si usa los interruptores de encendido / apagado para representar números, no puede obtener más precisión por interruptor que con una representación de base 2. Esto se debe simplemente a que los interruptores N pueden representar cantidades de 2 ^ N independientemente de lo que elija para que sean estos valores. Las primeras máquinas utilizaban dígitos de punto flotante de base 16, pero cada uno de ellos necesitaba 4 bits binarios, por lo que la precisión global por bit era la misma que la base 2 (en realidad, algo menor debido a los casos de borde).
Si elige una base que no es una potencia de 2, la precisión se pierde obviamente. Por ejemplo, necesita 4 bits para representar un dígito decimal, pero 6 de los valores disponibles de esos 4 bits nunca se usan. Este sistema se llama decimal codificado en binario y aún se usa ocasionalmente, generalmente cuando se hacen cálculos con dinero.
La lógica multinivel podría implementar otras bases de manera eficiente, pero al menos con las tecnologías de chip actuales, resulta muy costoso implementar más de 2 niveles. Incluso las computadoras cuánticas se están diseñando asumiendo dos niveles cuánticos: bits o qubits cuánticos.
La naturaleza del mundo y las matemáticas es lo que hace que la situación de punto flotante sea desesperada. Hay una jerarquía de números reales Integer -> Rational -> Algebraic -> Transendental. Hay una maravillosa prueba matemática, la diagonalización de Cantor, de que la mayoría de los números, es decir, un "infinito más grande" que los otros conjuntos, son Transdendentales. Sin embargo, no importa el sistema de punto flotante que elija, todavía habrá números racionales sin representación perfecta (es decir, 1/3 en la base 10). Este es nuestro universo. Ninguna cantidad de hardware inteligente lo cambiará.
El software puede y usa representaciones racionales, almacenando un numerador y denominador como números enteros. Sin embargo con estas las manos de tu programador están atadas. Por ejemplo, la raíz cuadrada no está "cerrada". Sqrt (2) no tiene representación racional.
Se han realizado investigaciones con representantes de números algebraicos y representantes "perezosos" de reales arbitrarios que producen más dígitos según sea necesario. La mayoría de los trabajos de este tipo parecen estar en geometría computacional.
Tu primer párrafo tiene sentido, pero el segundo no es un secuenciador. Una base más grande no haría una diferencia en la precisión.
La precisión de un número depende de la cantidad de almacenamiento que se utiliza para él, por ejemplo, un número binario de 16 bits tiene la misma precisión que un número base de 2 x 256, ambos toman la misma cantidad de información.
Ver la referencia de punto flotante habitual. Para más detalle - y generaliza a todas las bases.
Sí, las computadoras se han construido utilizando otras bases; conozco algunas que usan base 10 (decimal) cf wikipaedia
Voto que nos mudemos a un sistema de almacenamiento de números racionales. Dos intergers de 32 bits que se evaluarán como p / q. La multiplicación y la división serán operaciones realmente baratas. Sí, habrá números evaluados redundantes (1/2 = 2/4), pero quienes realmente usan el rango dinámico completo de un doble de 64 bits de todos modos.