Avertissement - Je ne suis pas un théoricien de l'information, juste un singe de code qui travaille principalement en C et C ++ (et donc avec des types à largeur fixe), et ma réponse va être de ce point de vue particulier.
Il faut en moyenne 3,2 bits pour représenter un chiffre décimal - 0 à 7 peut être représenté en 3 bits, alors que 8 et 9 nécessitent 4. (8*3 + 2*4)/10 == 3.21 .
C'est moins utile qu'il n'y paraît. D'une part, vous n'avez évidemment pas de fractions de bit. D'autre part, si vous utilisez des types entiers natifs (c'est-à-dire pas BCD ou BigInt), vous ne stockez pas de valeurs sous la forme d'une séquence de chiffres décimaux (ou leurs équivalents binaires). Un type à 8 bits peut stocker certaines valeurs qui prennent jusqu'à 3 chiffres décimaux, mais vous ne pouvez pas représenter toutes les valeurs à 3 chiffres décimaux sur 8 bits - la plage est [0..255]. Vous ne pouvez pas représenter les valeurs [256..999]en seulement 8 bits.
Lorsque nous parlons de valeurs , nous utiliserons la décimale si l'application s'y attend (par exemple, une application de banque numérique). Lorsque nous parlons de bits , nous utilisons généralement hexadécimal ou binaire (je n'utilise presque jamais octal car je travaille sur des systèmes qui utilisent des octets 8 bits et des mots 32 bits, qui ne sont pas divisibles par 3).
Les valeurs exprimées en décimales ne correspondent pas correctement aux séquences binaires. Prenez la valeur décimale 255. Les équivalents binaires de chaque chiffre serait 010, 101, 101. Pourtant, la représentation binaire de la valeur 255est 11111111. Il n'y a simplement aucune correspondance entre une des décimales de la valeur à la séquence binaire. Mais il existe une correspondance directe avec des chiffres hexadécimaux - F == 1111, de sorte que la valeur peut être représentée comme FFen hexadécimal.
Si vous êtes sur un système où les octets de 9 bits et les mots de 36 bits sont la norme, alors octal a plus de sens puisque les bits se regroupent naturellement en trois.
- En fait, la moyenne par chiffre est plus petite puisque 0 et 1 ne nécessitent qu'un seul bit, tandis que 2 et 3 ne nécessitent que 2 bits. Mais, en pratique, nous considérons 0 à 7 pour prendre 3 bits. Simplifie la vie de plusieurs façons.
d, c'est qu'il couvre un chiffre décimal, la plage de0..9.3*dles bits signifient trois chiffres décimaux et vous permettent de représenter des entiers de la plage0..999. Dix bits entiers (pensez binaire maintenant) donnent une plage de0..1023. 999 est assez proche de 1023, mais un peu moins. Vous pouvez donc vous attendre àdun peu moins de 10/3.