Como desarrollador web, entiendo muy poco los datos binarios.
Si tomo la frase "Hola mundo", la convierto a binaria y la almaceno como binaria en una base de datos SQL, parece que los 1 y 0 ocuparían más espacio que las letras. Me parece que usar letras sería como usar compresión, donde un símbolo representa múltiples.
¿Pero es así como funciona realmente?
¿El almacenamiento de datos de texto sin formato ocupa menos espacio que el almacenamiento del mensaje equivalente en binario?

Respuestas:
El texto plano es binario.
Cuando escribe un
Hdisco duro, el cabezal de escritura no talla dos líneas verticales y una línea horizontal en el plato, codifica magnéticamente los bits010010001 en el plato.A partir de ahí, debería ser obvio que almacenar datos de texto sin formato ocupa exactamente la misma cantidad de espacio que almacenar datos binarios.
Pero el texto plano es solo un formato binario particular 2
El texto sin formato se puede transformar de forma reversible en otros formatos binarios. Una transformación común es la compresión, que generalmente da como resultado una representación más compacta, lo que significa que se utilizan menos bits para representar la misma información.
Dependiendo de lo que esté utilizando para representar el texto sin formato, es posible que pueda usar diferentes formatos binarios para representar la misma información. Esto puede usar más espacio, puede usar menos.
Por ejemplo, los números
5y1234567podrían representarse en texto sin formato con caracteres de dígitos, lo que da como resultado estas secuencias de bits en el disco 3 :Alternativamente, puede usar el complemento de dos de 32 bits :
Cuál es una representación menos compacta de
5, pero una representación más compacta de1234567.Y hay un número literalmente infinito de otras representaciones que tendrían niveles variables de compacidad y flexibilidad, aunque, en la práctica, se usan mucho menos que muchas representaciones.
1 Suponiendo UTF-8. La secuencia exacta de bits para un personaje depende de la codificación específica que esté utilizando.
2 O realmente, varios formatos, dadas las diversas codificaciones .
3 Si se pregunta cuáles son esos ocho ceros en los extremos, bueno, necesita alguna forma de saber cuánto duran los datos. Las opciones básicamente se reducen a un marcador (usé esto, a través de un byte nulo), espacio dedicado a almacenar la longitud (Pascal usó un byte para almacenar la longitud de una cadena) o un tamaño fijo (utilizado en el complemento de los dos siguientes ejemplo).
fuente
Me parece una gran cosa divertida para pensar. Binario no es 1s y 0s en la forma en que lo hablas.
Imagina que hay una cantidad, puedo decirte qué cantidad es de muchas maneras diferentes:
Nineen inglésNeufen francés9en números arábigosIXen números romanos1001en binario con números arábigoson off off onen binario con encendido / apagadohigh low low highen binario representado con voltajes o palancas o niveles de agua o carga eléctrica ... o palabras en inglés 'alto' y 'bajo'Todos representan lo mismo. El punto aquí es que el binario no es 1s y 0s, esa es solo una forma de representar un valor.
Cuando habla de convertir una H en binario, probablemente imagina ver 10101010 en la pantalla, pero eso no es "binario", es un dígito para cada bit binario.
Sí, si convertiste
Ha "binario" como la gente normalmente habla de ello, y luego lo representaste en dígitos arábigos y luego lo almacenaste, ocuparía más espacio de la misma manera que la conversiónHaaitchocupa más espacio.Pero se puede ver que el binario es una forma de representar una cantidad, bien por esa lógica que dice "si convirtiera H en binario y lo representara como
high low high low high low high lowentonces, ¡tomaría 35 caracteres! ¡Eso es aún más10101010! Pero estos dos son 'binarios' .. Entonces, ¿cómo es uno más grande que el otro?La otra cara de esto es que preguntarse cómo
Hse almacena por un ordenador, y para ver queHes en sí mismo sólo una forma de representar una cantidad - la misma cantidad72,01001000oseventy twoo código de caracteres ASCIIH. Cuál es la respuesta de 8bittree de que el texto plano es binario, pero este soy yo tratando de mostrar lo que eso significa .Entonces obtienes un patrón de bits en una computadora
01001000y ¿qué significa? Cualquier cosa: podría hablarse como un número, como parte de un archivo zip, como un personaje, depende de la intención de la persona que lo creó. Si sabe que se supone que es texto sin formato, proviene de una codificación de caracteresH->01001000y lo busca en la tabla de codificación de caracteres: ASCII, UTF-8, shift-jis, etc. y encuentra la fuente correcta personaje y sale unHo lo que sea. O sale el carácter incorrecto si utiliza una búsqueda de codificación diferente a la utilizada por la persona que la creó. Este es el enlace de @Eric Lippert.Pero mientras escribo esto, y como lo piensas,
Hes un byte y01001000tiene 8 bytes, sí, eso es más espacio. Y sí, es (una representación de) binario. Pero está en un nivel de abstracción más alto que el que usa la computadora: binario mostrado en caracteres ASCII, donde cada personaje se representa detrás de escena con un patrón de bits binarios, cada uno tan grande como elHúnico.fuente
No nunca.
Su computadora ya almacena los datos de texto sin formato en la representación binaria equivalente. Almacenar algo como texto sin formato versus binario solo indica cómo la computadora debe interpretar ese flujo binario idéntico .
Eso es un poco cierto. Un personaje representará más de un bit. El problema es que son cosas de diferentes tamaños. Solo se necesita un bit para almacenar un 1 o un 0, pero 8 bits (o más) para almacenar un carácter de texto sin formato. No ganas nada usando personajes.
En todo caso , puede comprimir las cosas de la otra manera. Después de todo, 8 bits son 256 valores posibles diferentes, sin embargo, el texto plano generalmente se limita a letras, números y algunos caracteres de puntuación. No necesita tantos bits como sea necesario.
fuente