En tant que développeur Web, j'ai très peu de compréhension des données binaires.
Si je prends la phrase "Hello world.", La convertis en binaire et la stocke comme binaire dans une base de données SQL, il semble que les 1 et les 0 occupent plus d'espace que les lettres. Il me semble que l’utilisation de lettres équivaudrait en quelque sorte à l’utilisation de la compression, où un symbole représente plusieurs.
Mais est-ce vraiment comme ça que ça marche?
Le stockage de données en texte brut prend-il moins d'espace que le stockage du message équivalent en binaire?
Réponses:
Le texte en clair est binaire.
Lorsque vous écrivez
H
un disque dur sur un disque dur, la tête d’écriture ne sculpte pas deux lignes verticales et une ligne horizontale dans le plateau, elle code magnétiquement les bits01001000
1 dans le plateau.À partir de là, il devrait être évident que le stockage de données en texte brut occupe exactement la même quantité d’espace que le stockage de données binaires.
Mais le texte en clair est juste un 2 format binaire particulier
Le texte en clair peut être transformé de manière réversible en d’autres formats binaires. La compression est une transformation courante qui donne généralement une représentation plus compacte, ce qui signifie que moins de bits sont utilisés pour représenter la même information.
Selon ce que vous utilisez pour représenter le texte en clair, vous pourrez peut-être utiliser différents formats binaires pour représenter la même information. Cela peut utiliser plus d'espace, il peut en utiliser moins.
Par exemple, les nombres
5
et1234567
pourraient être représentés en texte clair à l'aide de caractères numériques, ce qui donne les séquences de bits suivantes sur le disque 3 :Vous pouvez également utiliser le complément à deux bits 32 bits :
Ce qui est une représentation moins compacte de
5
, mais plus compacte1234567
.Et il existe un nombre littéralement infini d’autres représentations qui auraient divers degrés de compacité et de souplesse, bien que, dans la pratique, elles soient beaucoup moins utilisées que cela.
1 En supposant UTF-8. La séquence exacte de bits d'un caractère dépend de l'encodage spécifique que vous utilisez.
2 Ou vraiment, plusieurs formats, étant donné les différents encodages .
3 Si vous vous demandez ce que sont ces huit zéros aux extrémités, eh bien, vous avez besoin d’un moyen de savoir combien de temps les données sont. Les options se résument en gros à un marqueur (j'ai utilisé cela, via un octet nul), un espace dédié au stockage de la longueur (Pascal a utilisé un octet pour stocker la longueur d'une chaîne), ou une taille fixe (utilisée dans le complément à deux suivant Exemple).
la source
Je trouve cela très amusant de réfléchir. Le binaire n'est pas un 1 ni un 0 dans la façon dont vous en parlez.
Imaginez qu'il y ait une quantité, je peux vous dire quelle est la quantité de différentes façons:
Nine
en anglaisNeuf
en français9
en chiffres arabesIX
en chiffres romains1001
en binaire avec chiffres arabeson off off on
en binaire avec on / offhigh low low high
en binaire représenté avec des tensions ou des leviers ou des niveaux d'eau ou une charge électrique ... ou des mots anglais «haut» et «bas»Ils représentent tous la même chose. Le point ici est que le binaire n'est pas 1 et 0, ce n'est qu'une façon de représenter une valeur.
Lorsque vous parlez de convertir un H en binaire, vous imaginez probablement voir 10101010 à l'écran - mais ce n'est pas "binaire", c'est un chiffre pour chaque bit binaire.
Oui, si vous convertissez
H
en "binaire" comme le font normalement les gens, puis que vous le représentez en chiffres arabes, puis que vous le stockez, cela prend plus d'espace de la même manière que la conversionH
enaitch
prend plus d'espace.Mais vous pouvez voir que le binaire est une façon de représenter une quantité, et bien par cette logique qui dit "si je convertis H en binaire et le représente comme
high low high low high low high low
cela prendrait 35 caractères! C'est encore plus que10101010
! Mais ces deux sont tous les deux" binaires " .. alors comment l'un est-il plus grand que l'autre?L'autre côté de cela est de se demander comment
H
est stockée par un ordinateur, et de voir queH
lui - même est juste une façon de représenter une quantité - la même quantité72
,01001000
ouseventy two
ou un code de caractères ASCIIH
. La réponse de 8bittree est que le texte brut est binaire, mais c'est moi qui essaie de montrer ce que cela signifie .Donc, vous obtenez un motif peu dans un ordinateur
01001000
et qu'est-ce que cela signifie? N'importe quoi - pourrait être considéré comme un nombre, comme une partie d'un fichier zip, comme un personnage, dépend de l'intention de la personne qui l'a créé. Si vous savez qu'il est censé être du texte brut, il provient d'un codage de caractèresH
->01001000
et vous le regardez dans le sens opposé dans la table de codage de caractères - ASCII, UTF-8, shift-jis, etc. et vous recherchez la bonne police. caractère et sort unH
ou quoi. Si vous utilisez une recherche de codage différente de celle de la personne qui l'a créée, le mauvais caractère apparaît. C'est le lien de @Eric Lippert.Mais au moment où j'écris ceci, et à mesure que vous y réfléchissez,
H
un octet sur01001000
8 octets, oui, c'est plus d'espace. Et oui c'est (une représentation de) binaire. Mais il est à un niveau d'abstraction plus élevé que celui utilisé par l'ordinateur - affichage binaire en caractères ASCII, où chaque caractère est représenté dans les coulisses avec un motif binaire, aussi gros que leH
seul.la source
Non jamais.
Votre ordinateur stocke déjà les données en texte brut dans la représentation binaire équivalente. Stocker quelque chose en tant que texte brut ou binaire indique simplement comment l’ordinateur doit interpréter ce flux binaire identique .
C'est un peu vrai. Un caractère représentera plus d'un bit. Le problème est que ce sont des choses de tailles différentes. Il ne faut qu'un bit pour stocker un 1 ou un 0, mais 8 bits (ou plus) pour stocker un caractère en texte brut. Vous ne gagnez rien en utilisant des personnages.
Si quelque chose , vous pouvez compresser les choses dans l'autre sens. Après tout, 8 bits correspondent à 256 valeurs possibles différentes, mais le texte brut est généralement limité à des lettres, des chiffres et quelques caractères de ponctuation. Il n'a pas besoin d'autant de bits que nécessaire.
la source