Systèmes de nombres et bases

Les systèmes de bases comme le binaire et l’hexadécimal semblent un peu étranges au début. La clé est de comprendre comment les différents systèmes  » font tic-tac  » comme un odomètre lorsqu’ils sont pleins. La base 10, notre système décimal, « tique » lorsqu’elle atteint 10 éléments, créant ainsi un nouveau chiffre. Nous attendons 60 secondes avant de passer à une nouvelle minute. L’hexagone et le binaire sont similaires, mais font tic-tac tous les 16 et 2 éléments, respectivement.

Essayez de convertir les nombres en hexagone et en binaire ici:

Way back when : Les nombres unaires

Loin dans le temps, nous n’avions pas de systèmes de base ! Il fallait monter dans les deux sens, à travers la neige et la chaleur torride. Quand on voulait compter un, on écrivait :

l

Quand on voulait 5, on écrivait

lllll

Et clairement, 1 + 5 = 6

l + lllll = llllll

C’est la façon la plus simple de compter.

Entrez chez les Romains

En chiffres romains, deux était un, deux fois. Trois était un, trois fois :

one = Itwo = IIthree = III

Cependant, ils ont décidé qu’ils pouvaient faire mieux que la vieille tradition des lignes dans le sable. Pour cinq, nous pourrions utiliser V pour représenter lllll et obtenir quelque chose comme

l + V = Vl

Pas mal, hein ? Et bien sûr, il y a beaucoup plus de symboles (L, C, M, etc.) que vous pouvez utiliser.

Le point clé est que V et lllll sont deux façons de coder le nombre 5.

Donner un nom à chaque nombre

Une autre percée a été de réaliser que chaque nombre peut être son propre concept distinct. Plutôt que de représenter trois comme une série de uns, donnez-lui son propre symbole : « 3″. Faites cela de un à neuf, et vous obtenez les symboles :

1 2 3 4 5 6 7 8 9

Les Romains étaient proches, si proches, mais ne donnaient des symboles uniques qu’à 5, 10, 50, 100, 1000, etc.

Utilisez votre position

Maintenant clairement, vous ne pouvez pas donner à chaque nombre son propre symbole. Il y en a simplement trop.

Mais remarquez une perspicacité à propos des chiffres romains : ils utilisent la position des symboles pour indiquer la signification.

IV signifie « soustraire 1 à 5″

et VI signifie « ajouter 1 à 5″.

Dans notre système numérique, nous utilisons la position d’une manière similaire. Nous ajoutons toujours et ne soustrayons jamais. Et chaque position est 10 de plus que celle qui la précède.

Notre choix de la base 10

Pourquoi avons-nous choisi de multiplier par 10 à chaque fois ? Très probablement parce que nous avons 10 doigts.

Un point à réaliser est que vous avez besoin de suffisamment de chiffres pour « remplir » jusqu’à ce que vous atteigniez le prochain nombre. Laissez-moi vous démontrer.

Si nous voulons faire rouler le compteur kilométrique tous les 10, pour ainsi dire, nous avons besoin de symboles pour les chiffres un à neuf ; nous n’avons pas encore atteint dix. Imaginez les nombres comme un tic-tac lentement ascendant – à quel moment vous retournez l’unité suivante et repartez de rien ?

Entrez zéro

Et que se passe-t-il lorsque nous atteignons dix ? Comment montrer que nous voulons exactement un « dix » et rien dans la colonne des « uns » ?

On utilise zéro, le nombre qui n’existe pas. Zéro est tout un concept, c’est un placeholder, un blanc, un espace, et bien d’autres choses encore. Il suffit de dire que le zéro est l’une des grandes inventions de tous les temps.

Le zéro nous permet d’avoir un substitut vide, ce que les Romains n’avaient pas. Regardez comme leurs nombres sont difficiles à manier sans cela.

Le célèbre roman « 1984 » de George Orwell serait « MCMLXXXIV » ! Ça roule sur la langue, n’est-ce pas ?

Envisager d’autres bases

Souvenez-vous que nous avons choisi de rouler notre odomètre tous les dix. Notre comptage ressemble à ceci:

123456789 (uh oh, I'm getting full!)10 (ticked over – start a new digit)

Et si nous faisions un tic-tac à 60 quand nous comptons, comme nous le faisons pour les secondes et les minutes?

1 second2345…58591:00 (60 seconds aka 1 minute. We've started a new digit.)

Tout est OK jusqu’ici, non ? Notez que nous utilisons les deux points ( 🙂 pour indiquer que nous sommes à un nouveau « chiffre ». En base 10, chaque chiffre peut se suffire à lui-même.

Essayez la base 16

Si nous voulons la base 16, nous pourrions faire quelque chose de similaire :

123456789101112131415 (we're getting full)1:00 (16 – we've started a new digit)

Mais nous ne voulons pas écrire les nombres hexadécimaux avec la notation deux-points (même si nous le pourrions). Nous préférons créer des symboles séparés pour 10-15 afin de pouvoir écrire les nombres comme nous en avons l’habitude. Nous sommes à court de chiffres (1-9 déjà utilisés, avec le 0 comme symbole de remplacement) et nous avons donc besoin d’autres symboles. Nous pourrions utiliser des lignes ondulées ou d’autres formes, mais la convention est d’utiliser des lettres, en style romain. Tout comme 5 est devenu V, les programmeurs utilisent les lettres A-F pour obtenir suffisamment de chiffres jusqu’à 16. C’est-à-dire,

123456789A (10 – we're using the symbol "A")B (11)C (12)D (13)E (14)F (15 – uh oh, we're getting full)10 (16 – we start a new digit)

Ahah ! Maintenant, nous pouvons utiliser un chiffre par « place », et nous savons que 10 signifie en fait que nous avons « coché sur 16″ une fois.

20 signifie que nous avons coché sur 16 deux fois (32).

25 signifie que nous avons coché sur 16 deux fois (ce qui nous donne 32) et sommes allés un 5 supplémentaire. Le total est 32 + 5 = 37.

Revue rapide

Avec moi jusqu’ici ? C’est plutôt cool, non ? On peut compter dans le système que l’on veut. Remarquez aussi que la base 16 est plus « économe en espace » dans le sens où nous pouvons écrire un nombre comme 11 en un seul chiffre : B.

La base 16 n’est vraiment pas si différente de la base 10, nous prenons juste plus de temps pour la remplir.

Le monde merveilleux du binaire

Nous avons vu beaucoup de systèmes de base, de l’unaire trop simple, aux chiffres romains peu lisibles, à la base 10 stable et à la base 16 compacte.

Qu’est-ce qui est génial avec le binaire ? Dans l’esprit de garder les choses simples, c’est le système numérique le plus simple qui a le concept de « tic-tac ». Le système unaire, où nous écrivons simplement 1, 11, 111… est infini. Le binaire, avec deux options (1 et 0) ressemble à ceci:

1: 12: 10 (we're full – tick over)3: 114: 100 (we're full again – tick over)5: 1016: 1107: 1118: 1000 (tick over again)…

et ainsi de suite.

Parce que le binaire est si simple, il est très facile à construire en matériel. Vous avez juste besoin de choses qui peuvent s’allumer ou s’éteindre (représentant 1 et 0), plutôt que des choses qui ont 10 états possibles (pour représenter le décimal).

Parce qu’il est si simple, le binaire est également résistant aux erreurs. Si votre signal est « partiellement allumé » (disons 0,4), vous pouvez supposer que c’est un zéro. Et s’il est majoritairement actif (disons 0,8), vous pouvez supposer qu’il s’agit d’un 1. Si vous utilisez un système comportant 10 états possibles, il est difficile de savoir quand une erreur s’est produite. C’est l’une des raisons pour lesquelles les signaux numériques sont si résistants au bruit.

Autres exemples de bases

Nous utilisons d’autres bases tout le temps, même des bases changeant dynamiquement. Nous n’y pensons généralement pas de cette façon :

Heures, minutes, secondes : 1:32:04

  • Nous savons que cela fait 1 heure, 32 minutes, 4 secondes. En secondes, cela fait 16060 + 32*60 + 4.

Pieds et pouces : 3′ 5″

  • C’est 3 pieds, 5 pouces ou 3 * 12 + 5 pouces.

Livres et onces : 8 lbs, 5 oz

  • Puisqu’une livre équivaut à 16 oz, ceci est 8 * 16 + 5 oz. Nous avons utilisé un système numérique en base 16 depuis le début !

Pensées partagées

« 10″ dans tout système numérique indique la base, et signifie que nous avons coché une fois. 10 en binaire signifie deux, 10 en décimal signifie dix, et 10 en hexadécimal est seize.

Comment garder ces nombres à part ? Les programmeurs écrivent souvent « 0b » devant les nombres binaires. Ainsi, 2 en binaire est

0b10

De même, ils écriront 0x devant les nombres hexadécimaux. Donc 16 en hexadécimal est :

0×10

S’il n’y a pas de symboles (0b ou 0x) devant, nous supposons que c’est la base 10, un nombre régulier.

Maintenant allez-y et profitez de vos nouvelles connaissances !

Autres posts de cette série

  1. Systèmes de nombres et bases
  2. Le guide rapide des GUID
  3. Comprendre la racine carrée inverse rapide de Quake
  4. Une introduction simple à l’informatique. Réseau
  5. Échanger deux variables en utilisant XOR
  6. Comprendre l’ordre des octets Big et Little Endian
  7. Unicode et vous
  8. Un petit truc sur les formats de fichiers binaires
  9. Algorithmes de tri

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.