En lo siguiente estoy ignorando ideas de compresión … que tienden a hacer que el punto sea discutible.
Si solo son valores enteros, entonces el binario es definitivamente el más eficiente. No estás desperdiciando ningún bit de un byte. Estás usando cada bit para representar una potencia particular de 2. Los otros mencionados están codificando una representación de glifo usando alguna codificación de caracteres de texto (quizás ASCII), lo que significa que solo usas un pequeño subconjunto de los posibles valores de bytes, desperdiciando el resto de los valores ya que nunca serán utilizados. NOTA: No me estoy refiriendo a binario codificado como caracteres de texto ella, sino como los bits dentro del byte, de lo contrario, es la forma más ineficiente posible y completamente antinatural tanto desde la perspectiva humana como de la computadora.
Si se trata de fraccional, es un poco diferente. Decimal no codifica fácilmente en binario. En este caso, el más eficiente probablemente sería BCD (decimal codificado en binario), utilizando grupos de 4 bits para cada dígito decimal, lo que significa que un byte puede codificar dos decimales. Ir con octal o hexadecimal tendrá los mismos problemas que con el binario: aún no es fácil convertirlos a / desde un decimal; un solo dígito de fracción decimal podría significar dígitos binarios / hex / oct ilimitados para codificar por completo.
- ¿Qué tan seguro es el Portapapeles?
- Estoy comprando mi nueva computadora portátil hoy. ¿Cuáles son algunos de los modelos de portátiles con Windows más potentes?
- ¿El portátil Dell Inspiron i3147-3750sLV funciona bien con Linux?
- ¿Viene una placa base junto con un procesador y RAM?
- Mi disco duro muestra un error de E / S cuando lo enchufo en mi computadora portátil. ¿El error es reparable o está roto para siempre?
Si tiene que seguir con una codificación de texto, intente utilizar tantos caracteres diferentes como sea posible. Quizás algo como base64 en su lugar. Aunque para evitar fracciones, podría ser beneficioso usar una codificación basada en una potencia de 10 en su lugar. Quizás algo así como una base100 … lo que significa que estás usando alrededor del 39% de cada byte en lugar de solo el 25% para base64, o 6% para hexadecimal, o 3% para octal. Aunque esa no es una codificación estándar, y podría tener problemas en algunos casos, lo que probablemente sea la razón por la que necesitaba texto en primer lugar. Si simplemente codificó decimales usando letras ASCII normales (es decir, escriba números en base10), entonces simplemente estaría usando los glifos de 0 a 9 caracteres (4% de eficiencia). De lo contrario, habría optado por binario normal o BCD en primer lugar (lo que significa que estaría utilizando el 100% o el 63% de los posibles valores del byte, respectivamente).
Creo que el problema es que pensaste que tienes que guardar números como texto. En tal caso, en realidad está colocando dos codificaciones una encima de la otra. Además, el sistema de números que usamos los humanos (decimal o base10) es solo un sistema de números arbitrario, muy probablemente solo porque tenemos 10 dedos. No hay una razón real por la que “necesitemos” 10, podríamos haber ido con 12, 23, 78 o lo que sea. De hecho, uno de los primeros sistemas de numeración utilizados (en la época de Mesopotamia) fue la base 60, y podría decirse que es un sistema mucho mejor, ya que funciona mucho más simple con muchas fracciones como números redondos en lugar de largas cadenas de dígitos. Para leer un poco más sobre su pregunta, quizás mire las respuestas a esta pregunta relacionada: ¿Por qué no podríamos usar las matemáticas de base 100 o alguna otra base grande como 128 o 256 para almacenar imágenes y otros blobs de datos grandes más fácilmente?