Jump to content

Binaire opération


Go to solution Solved by Pitchounou,

Recommended Posts

  • Ancien Responsable Matière
Posted (edited)

Bonjour 🙂 

au sujet des programmes portant sur le binaire (semaine 8 ), niveau informatique ca va je comprends le programme( j'arrive a le faire à la main et trouver les bon résultats), cependant l'aspect mathématique  en soi je ne comprends pas comment ça marche 

pourquoi pour convertir une chaine binaire de base 2 en base 10 l'opération a faire est chiffre + 2*binaire(texte, pos-1) ? 

pourquoi (programme d'après) pour convertir un nombre lambda en binaire l'opération est (reste-chiffre)/2 

en gros si on nous pose un programme " ce programme affiche ...." je vais savoir répondre 

mais si on nous pose "ce programme convertis un nombre en binaire de base 2" ou "un nombre binaire en nombre normal" je ne vais pas savoir si on fait la bonne opération ou pas du tout 

est ce que une personne aurait compris la logique de l'opération pour convertir ? 

j'espère que c'est pas trop brouillon haha vraiment navrée si c'est le cas 

merci d'avance pour les éclaircissements 🙂 

bonnes révisions à tous 😉 

Edited by Sarou
  • Solution
Posted (edited)

Salut salut @Sarou

 

Pour commencer petit rappel sur le binaire, comme ça on est sur de parler des même trucs : si on prend une chaine exemple 101, pour la transformer en base de 10 on considère que le 1 le plus à droite est à la position 2^0, que le 0 est à la position 2^1, et que le 1 le plus à gauche est à la positon 2^2. Donc on fait le chiffre en question (0 ou 1), multiplié par sa position : 1x 2^0 + 0x2^1 puis 1x2^2 = 5.

 

A partir de là, on va prendre une chaîne en exemple 100101, et cette chaine on veut la traduire en nombre en base de 10.

Une façon de réfléchir c’est de se dire que ça revient à chercher la traduction en base de 10 de 10010 (et à la multiplier par deux mais oublie pour l'instant on y revient après) et d’ajouter le dernier chiffre multiplié par 2^0 (puisque c’est sa position, on revient à ce que j’ai dit au début en rappel). Or rajouter le dernier chiffre multiplié par 2^0, ça revient juste à rajouter le dernier chiffre (2^0=1) : c’est de la que vient la partie chiffre + binaire(texte,pos-1). 

 

Maintenant pourquoi on multiplie binaire(texte,pos-1) par 2 ? 

 

Et bien quand tu fais cette méthode, tu vas décaler toutes tes positions de 1 vers la gauche : c’est-à-dire qu’au lieu de considérer la chaine entière 100101 tu la tronques en 10010, et tu cherches la valeur en base de 10 de ta nouvelle chaine. Problème : ton 0 le plus à droite qui originellement était à la position 2^1 dans ta chaine totale, se retrouve à la position 2^0 dans ta chaine tronquée (ce qui nous arrange parce qu’on veut faire ça, càd tronquer la chaine jusqu’à ce qu’on arrive au tout dernier chiffre à gauche à la position 2^0, ce qui nous return tout simplement le chiffre et après on pourra remonter). Seulement toi en réalité tu ne veux pas 0 à la position 2^0, tu veux sa vraie position dans ta « vraie » chaine. Décaler tout d'une position vers la gauche, ça revient à diviser par deux (on passe de 2^1 à 2^0), donc pour redonner la vraie valeur on doit tout re-décaler vers la droite, ce qui revient tout simplement à multiplier par deux ! 

 

Je fais un petit exemple rapide avec la même chaine très courte de tout à l’heure 101 (qui est égal à 5), et on va retrouver le même résultat : on considère que ça revient à trouver la traduction en base de 10 de « 10 », la multiplier par deux pour avoir sa vraie valeur dans notre chaine totale (puisqu’on a tout décalé d’1 à gauche) et rajouter 1x2^0 c’est-à-dire 1 c’est-à-dire "chiffre". 

 

-       Je veux 1 + binaire(10)*2, pour cela il me faut binaire(10)

-       Je cherche la conversion de la chaine "10", ça revient à faire la conversation de la « chaine » 1 *2 + 0

-       Je cherche la conversion de "1", sachant que 1 est à la position 2^0, la fonction récursive renvoie tout simplement le chiffre, c’est-à-dire 1 

-       Je remonte avec 1[conversion de 1 ]x2 + 0 = 2 

-       Je remonte avec 2 [conversion de 10]x2+1= 5 

 

Tu me dis si c’est plus clair ! Y’a aussi une autre manière de comprendre mais je trouve ça un peu moins intuitif 

Edited by Pitchounou
  • Ancien Responsable Matière
Posted

@Pitchounou o m g  j'ai compris 

il est trop bien ton exemple !!! merci beaucoup !!! 😍 c'est bien plus compréhensible !!! je vais appliquer ça au programme ça devrait mieux passer 😉 

merciiii 👍

 

 

Posted (edited)

@Sarou avec plaisir ! (NB : ducoup tu devrais comprendre le programme suivant qui fait l'inverse, de base de 10 à base de 2, sinon tu me dis!)

Edited by Pitchounou

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...