Les mathématiques simples derrière les algorithmes de conversion décimal-binaire

Si vous cherchez sur le web « Comment convertir du décimal au binaire », vous trouverez quatre algorithmes simples : deux pour les entiers et deux pour les fractions. Ils sont présentés avec des exemples ci-dessous dans la première partie de l’article.Mais alors que la simple connaissance des algorithmes est presque toujours suffisante, j’ai décidé d’essayer de comprendre pourquoi ils fonctionnent. Dans la deuxième partie de cet article, nous expliquons les mathématiques de base de chacun d’entre eux. Le fait de les connaître peut vous aider à vous souvenir de l’un ou l’autre des algorithmes si vous les oubliez soudainement. Je vous suggère fortement de prendre un bloc-notes et un stylo et d’effectuer les opérations en même temps que moi pour mieux vous souvenir des maths.Voici les quatre algorithmes avec des exemples que vous pouvez trouver sur le web.

Convertir un entier décimal en binaireLien vers cette section

Pour convertir un entier en binaire, commencez par l’entier en question et divisez-le par 2 en gardant connaissance du quotient et du reste. Continuez à diviser le quotient par 2 jusqu’à ce que vous obteniez un quotient de zéro. Ensuite, il suffit d’écrire les restes dans l’ordre inverse.

Voici un exemple de cette conversion en utilisant l’entier 12.
D’abord, divisons le nombre par deux en précisant le quotient et le reste :

Maintenant, il suffit d’écrire le reste dans l’ordre inverse -1100. Ainsi, 12 dans le système décimal est représenté par 1100 en binaire.

Convertir une fraction décimale en binaireLien vers cette section

Pour convertir une fraction en binaire, commencez par la fraction en question et multipliez-la par 2 en gardant la remarque de la partie entière et fractionnaire résultante. Continuez à multiplier par 2 jusqu’à ce que vous obteniez une partie fractionnaire résultante égale à zéro. Ensuite, il suffit d’écrire les parties entières à partir des résultats de chaque multiplication.

Voici un exemple de cette conversion en utilisant la fraction 0,375.

Maintenant, il suffit d’écrire la partie entière résultante à chaque étape – 0,011. Ainsi, 0,375 dans le système décimal est représenté par 0,011 en binaire.

Conversion d’un nombre entier binaire en décimalLien vers cette section

Pour convertir un nombre entier binaire en décimal, commencez par la gauche. Prenez votre total actuel, multipliez-le par deux et ajoutez le chiffre actuel. Continuez jusqu’à ce qu’il n’y ait plus de chiffres.Voici un exemple d’une telle conversion en utilisant la fraction 1011.

Conversion de fraction entière en décimaleLien vers cette section

Pour convertir une fraction binaire en décimale, commencez par la droite avec le total de 0. Prenez votre total actuel, ajoutez le chiffre actuel et divisez le résultat par 2. Continuez jusqu’à ce qu’il n’y ait plus de chiffres. Voici un exemple de cette conversion en utilisant la fraction 0,1011. J’ai simplement remplacé la division par 2 par une multiplication par 1/2.

Voilà 4 algorithmes simples qui vous permettront de convertir des nombres binaires en décimaux et inversement.

Développement base-q d’un nombreLien vers cette section

La clé pour comprendre pourquoi ces algorithmes fonctionnent est une base-q expansion d’un nombre. Un nombre entier dans n’importe quel système numérique peut être représenté sous la forme suivante :

où,

  • N est un nombre entier
  • x est le chiffre (0 à 9 pour le système en base-10, 0 et 1 pour le système de base 2)
  • q est la valeur de base (10 pour le système de base 10, 2 pour le système de base 2)

Dans tout cet article, ce formulaire est désigné par base q expansion of the number N, ou simplement base q expansion. Voyons comment cela se présente pour le nombre 12 dans les systèmes décimal et binaire :

De même, un nombre fractionnaire dans n’importe quel système numérique peut être représenté sous la forme suivante :

où,

  • N est une fraction
  • x est le chiffre (0 à 9 pour le système en base-10, 0 et 1 pour le système en base 2)
  • q est la valeur de base (10 pour le système en base 10, 2 pour le système en base 2)

Pour le nombre 0.375 dans les systèmes décimal et binaire, la représentation est la suivante :

Conversion d’un entier décimal en binaireLien vers cette section

Il s’avère que nous pouvons utiliser cette forme d’expansion base-q pour convertir un nombre du système décimal au système binaire. Faisons cela pour le même nombre 12. Tout d’abord, faisons comme si nous ne savions pas comment il est représenté en binaire et écrivons-le avec les chiffres inconnus remplacés par x:

Notre tâche consiste à trouver tous les x. La première chose que nous devons remarquer ici est que toutes les sommes, sauf la dernière, seront des nombres pairs, car elles sont toutes des multiples de deux. Maintenant, en utilisant cette information, nous pouvons déduire le chiffre pour le x0 – si le nombre entier converti est pair, alors x0 est égal à 0, s’il est impair – alors x0 doit être égal à 1. Ici, nous avons le nombre 12 qui est pair, donc x0 est égal à zéro. Écrivons ces informations :

Après, nous devons trouver la valeur de x1. Comme toutes les sommes de x1 à xN sont des multiples de deux, nous pouvons factoriser 2 pour isoler x1. Faisons cela :

Il est également facile de voir que la somme des valeurs à l’intérieur des parenthèses est égale à 6. Nous pouvons donc écrire notre première étape comme:

Continuons à trouver les x restants. Nous pouvons écrire le polynôme à l’intérieur de la parenthèse comme une déclaration séparée:

Ici, en appliquant la même logique que précédemment, nous pouvons voir que x1 est égal à 0. Réécrivons-le et factorisons également 2 à nouveau :

Donc, notre deuxième étape est :

Maintenant, nous pouvons voir un modèle. Nous pouvons continuer à factoriser 2 jusqu’à ce que le quotient soit nul. Suivons ce modèle et voyons ce que nous obtenons.

Puisque le quotient est égal à 1, il ne reste qu’un seul sommande, réécrivons donc l’expression précédente :

Donc, notre troisième étape est :

Donc, on se retrouve avec ce qui suit :

Il est clair que x3 est égal à 1. Mais, puisque pour notre algorithme nous avons besoin d’un quotient, réécrivons l’expression précédente pour qu’elle ait un quotient:

Puisque nous nous retrouvons avec le quotient de 0, il n’y a rien d’autre à travailler et c’était notre dernière étape. Écrivons-la :

Alors maintenant nous avons terminé la conversion. Voici comment se présente notre conversion par étapes:

Il est clair maintenant que le reste à chaque étape correspond à la valeur des x dans les positions correspondantes : le premier reste correspond au premier x, le deuxième reste au deuxième x et ainsi de suite. Ainsi, le nombre 12 en binaire en utilisant l’algorithme décrit ci-dessus est représenté par 1100.

Rappellez-vous que nous avons commencé avec l’idée de montrer pourquoi l’algorithme qui implique la plongée par 2 fonctionne. Reprenons les étapes décrites ci-dessus et déplaçons le 2 vers la partie gauche des expressions :

De cette façon, vous pouvez voir comment nous sommes arrivés à l’algorithme décrit au début. Nous pouvons également mettre les calculs de ces quatre étapes dans une seule représentation comme ceci

Assurez-vous de comprendre comment nous arrivons à cette représentation car nous en aurons besoin lorsque nous explorerons comment fonctionne l’algorithme de conversion du binaire au décimal.

Conversion d’une fraction décimale en binaireLien vers cette section

Pour montrer pourquoi nous multiplions par 2 et prenons la partie entière lors de la conversion des fractions en binaire, je vais également utiliser la forme d’expansion en base-q des fractions. Je vais utiliser le nombre fractionnaire 0,375 de la première partie de l’article. De la même manière que pour la partie entière, faisons comme si nous ne savions pas comment ce nombre est représenté en binaire et écrivons-le avec les chiffres inconnus remplacés par x:

Comme pour les entiers, notre tâche est de trouver tous les x en singularisant les x. Voyons comment nous pouvons le faire. La première chose à remarquer ici est que les puissances négatives de 2 nous donnent des fractions dont le dénominateur est 2 avec des puissances positives. Réécrivons l’expression ci-dessus :

Il est immédiatement évident que nous pouvons simplement factoriser 1/2 dans la partie droite de l’expression. Faisons cela :

et on peut alors déplacer 1/2 à la partie gauche

Ok, ici nous avons isolé x1, et nous savons qu’il peut être soit 1 soit 0. Pour déterminer quel chiffre il possède, regardons les sommets restants :

Réfléchissons à la taille que peut avoir la somme de ces nombres. Si le nombre maximum de chiffres x est 1, alors nous pouvons simplement remplacer les x par des 1 et écrire la somme comme :

Bien, il s’agit d’une série géométrique de fractions, et la somme de telles séries se trouve dans les bornes , donc le nombre maximum qu’une telle somme peut nous donner est 1. Reprenons maintenant notre expression :

Maintenant, cela devrait être clair ici que si le côté droit est inférieur à 1, alors x1 ne peut pas être égal à 1 et donc il est égal à 0, tandis que la partie restante est égale à 0,75.

Cela ressemble exactement à la première étape de l’algorithme présenté au début :

Sortons la partie fractionnaire de 0.75 et factorisons encore 1/2 pour singulariser x2:

et déplaçons 1/2 vers la gauche :

Maintenant, si x2 est égal à 0, alors la somme du côté gauche de l’expression ne peut pas être supérieure à 1, mais le côté gauche est 1.5, donc x1 doit être égal à 1 et la partie restante à 0,5. Écrivons-le :

A nouveau, cela suit le schéma de l’algorithme présenté au début :

Reprenons les mêmes actions pour la partie fractionnaire restante de 0.5.

En utilisant la même logique que précédemment, nous pouvons voir que x3 est égal à 1 et qu’il n’y a pas de partie fractionnaire restante :

Puisque la partie fractionnaire restante est égale à 0, voici à quoi ressemble notre dernière étape :

Ecrivons donc à nouveau toutes les étapes :

C’est exactement l’algorithme que j’ai présenté au début. Comme nous l’avons fait avec les entiers, nous pouvons aussi mettre les calculs de ces trois étapes dans une seule représentation comme ceci :

Encore, il est important que vous saisissiez bien cette représentation car nous en aurons besoin lorsque nous explorerons la conversion binaire-décimale.

Pourquoi toutes les fractions ne peuvent pas être représentées de façon finie en binaireLien vers cette section

Le fait que certaines fractions représentées de façon finie dans le système décimal ne peuvent pas être représentées de façon finie dans le système binaire surprend de nombreux développeurs. Mais c’est exactement la confusion qui est à l’origine du résultat apparemment bizarre de l’addition de 0,1 à 0,2. Alors, qu’est-ce qui détermine si une fraction peut être représentée de manière finie dans un système numérique ? Pour qu’un nombre soit représenté de manière finie, le dénominateur d’une fraction doit être une puissance de la base du système. Par exemple, pour le système en base 10, le dénominateur doit être une puissance de 10, c’est pourquoi nous pouvons représenter finiment 0.625 en décimal:

et ne peut pas représenter finiment 1/3 :

Il en va de même pour le système de base 2 :

Mais si on vérifie 0.1, le dénominateur est 10 et ce n’est pas une puissance de 2, donc 0,1 va être une fraction infinie dans le système binaire. Voyons cela en utilisant l’algorithme que nous avons appris plus haut :

Nous pouvons continuer à faire cela à l’infini, mais écrivons-le sous forme de fraction continue périodique :

Conversion d’un entier binaire en décimalLien vers cette section

Je vais utiliser le même entier binaire 1011 de la première section pour vous montrer pourquoi l’algorithme de multiplication par 2 fonctionne. Ici, nous allons également utiliser la forme d’expansion en base-q du nombre. Écrivons-le sous cette forme :

Comme tous les sommets sont des multiples de 2, nous pouvons continuer à factoriser 2 jusqu’à ce que le quotient soit nul. Faisons cela :

Maintenant, si vous suivez simplement l’ordre des opérations mathématiques, vous vous retrouverez exactement dans les mêmes étapes que celles que j’ai montrées au début, notamment :

De cette façon, 1011 en binaire correspond à 11 en décimal.

Conversion d’une fraction binaire en décimalLien vers cette section

Maintenant, nous sommes arrivés au dernier algorithme. Probablement, vous avez déjà compris vous-même la mécanique derrière lui. Si ce n’est pas le cas, voyons pourquoi il fonctionne. La forme d’expansion base-q du nombre est la clé ici aussi. Nous allons prendre le nombre 0.1011 de la première section. Écrivons-le sous la forme développée :

Encore, puisque toutes les sommes sont des multiples de 1/2, nous pouvons continuer à factoriser 1/2 jusqu’à ce qu’il ne reste plus de partie fractionnaire. Faisons cela :

Suivre l’ordre des opérations mathématiques produit l’algorithme exposé au début :

Ainsi, 0.1011 en binaire correspond à 0,6875 en décimal.

Discuter avec la communauté.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *