Estaba teorizando un nuevo tipo de número de 64 bits para usar en el almacenamiento de datos, pero luego comencé a preguntarme si podría ser práctico si se creara en hardware. (Creo que sería demasiado lento si solo el software pudiera interpretarlo).
Codificación
Bits 0-7: a (entero con signo de 8 bits)
Bits 8-15: b (entero con signo de 8 bits)
Bits 16-39: c (punto flotante con signo de 24 bits: signo 1b, exponente 7b, mantisa 16b)
Bits 40-64: d (punto flotante sin signo de 24 bits: 8b exponente, 16b mantisa)
Fórmula:
a^b+cd
Tenga en cuenta que I he preguntado a StackOverflow cómo deben codificarse los dos números de punto flotante de 24 bits y el valor mínimo de estos.
Justificación
Usando esto, Wolfram | Alpha dice que el número positivo más pequeño que no sea cero es aproximadamente la proporción de 3 longitudes planck a 1 kilómetro y la el número positivo más grande es increíblemente más grande que el número de átomos en una bola de carbono del tamaño de nuestro universo conocido
Problema
Ignoremos, solo para esta pregunta, el hecho de que probablemente haya enormes brechas en los números posibles.
Descifrar esto es trivial. Podemos construir fácilmente una ALU que puede elevar un número de 8 bits a la potencia de otro, y luego agregarlo al producto de un número de punto flotante de 24 bits a otro. El problema viene en la codificación. No tengo idea de qué algoritmo podría descubrir la mejor manera de codificar 12,345,678,901,234,567,890,123,456,789,012,345,678,901,234,567,890.98765432109876543210987654321
, a pesar de que es un número perfectamente razonable para que este formato lo represente. Aún así, sé que cualquier algoritmo es mejor para esto, sería más rápido en hardware que en software (duh). Mi pregunta aquí es si este algoritmo se construiría prácticamente en una oblea de silicio, o sería demasiado complejo, ¿requeriría demasiada memoria, etc.?
Además, soy muy nuevo en este tipo de pregunta. Si me puede ayudar a redactarlo, le estaré muy agradecido