Les methodes pour convertir le nombre 4432 de base5 à base2

Fermé
arw - Modifié le 23 oct. 2023 à 15:31
 Utilisateur anonyme - 23 oct. 2023 à 20:34

Bonjour,

comment convertir le nombre 4432 de base 5 à base binaire directement, sans passer de base 10 , mais en utilisant la méthode des divisions successives. Dans cet exemple la réponse est 1001101001 en base 2.
Windows / Chrome 117.0.0.0

A voir également:

6 réponses

blux Messages postés 26500 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 2 décembre 2024 3 317
23 oct. 2023 à 10:27

Salut,

pour moi, ce que j'en comprends, c'est qu'il faut faire ce qu'a indiqué Whismeril.

C'est-à-dire appliquer la méthode des divisions euclidiennes (qui marche quelle que soit la base) de manière informatique.

Ce qu'a indiqué PierrotLeFou est pour moi hors-sujet puisque la question ne porte pas sur la représentation interne mais plutôt sur des calculs mathématiques.


1
Pierr10 Messages postés 12374 Date d'inscription mardi 13 février 2018 Statut Modérateur Dernière intervention 1 décembre 2024 5 154
Modifié le 21 oct. 2023 à 15:39

Bonjour,

Je ne suis pas assez bon en mathématiques pour apporter une solution.

Je pense cependant que lorsqu'on passe de la base 10 à une base n par des divisions successives, ces divisions sont faites avec les règles de calcul en base 10 telles qu'on les a apprises à l'école primaire.

Je suppose donc que si on veut passer de la base 5 à la base 2  par des divisions successives, il faudra utiliser de nouvelles règles de calcul pour faire ces divisions : des règles de calcul en base 5 qu'il reste à établir (tables de multiplication en base 5)

A priori, ça me semble pas du tout évident : il faudra apprendre à penser en base 5.

En cherchant un peu, je suis tombé sur cette page :
https://www.ilemaths.net/sujet-convertir-d-une-base-a-une-autre-sans-passer-par-la-base-10-450987.html

La technique est assez facile à comprendre.

Dans le cas d'un passage de la base 5 à la base 2, c'est abordable si on se limite à des petits nombres.

Mais ici, puisque arw a donné le résultat, on arrive à un nombre à 10 chiffres. Ce qui veut dire que dans les calculs on va monter jusqu'à 2^9 !
On commence à être dans des calculs énormes. J'ai regardé le début et j'ai laissé tomber.


0

Dans le code ci-dessous, il n'est fait nulle mention du système décimal ni des registres de la mémoire.
Je me fiche de la façon dont l'ordi fait ses calculs. Il sait comment les faire.
Je ne traite ni les nombres négatifs ni les erreurs.
Je ne fais aucune arithmétique simulée et je ne crois pas que c'est ce qu'on demande.
C'est trop compliqué pour un débutant.

def symbolic2numeric(symbol, base):     # Conversion de la forme symbolique à la forme numérique.
    b = len(base)     # La valeur numérique de la base est le nombre de symboles dans la base.
    number = 0     # Valeur de départ du nombre cherché.
    for s in symbol:     # On parcourt la liste des symboles.
        # La position (ou index) est la valeur numérique associée au symbole à cette position.
        digit = base.index(s)     # Valeur numérique associée au symbole. Je suppose qu'il n'y a pas d'erreur.
        number = number * b + digit     # Je tasse le nombre d'une position et j'ajoute le digit suivant.
    return number
def numeric2symbolic(number, base):     # Convertion de la forme numérique à la forme symbolique.
    b = len(base)     # La valeur numérique de la base est le nombre de symboles dans la base.
    symbol = ""     # On commence avec une chaîne vide de symboles.
    while number > 0:     # Tant que le nombre est plus grand que 0.
        s = base[number % b]     # Symbole associé au chiffre des unités dans cette base.
        symbol = s + symbol     # J'ajoute le symbole à la gauche.
        number = number // b     # Je divise par la base pour obtenir la prochaine "colonne" en position des unités.
    return symbol or base[0]     # base[0] est le symbole associé au 0 dans cette base (requis si le nombre est 0 au départ)
nombre = symbolic2numeric("4432", "01234")      # Je convertis "4432" en base 5 (5 symboles) vers la forme interne ou numérique.
symbole = numeric2symbolic(nombre, "01")     # Je convertis ce nombre de la forme interne ou numérique vers la base 2 (2 symboles).
print(symbole)     # J'affiche la valeur symbolique du nombre.
0
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 807
Modifié le 23 oct. 2023 à 15:57

Bonjour,

Merci pour la proposition, mais comme le signalent blux et Whismeril, cette réponse ne répond pas aux contraintes de l'exercice. En effet, d'un point de vue maths :

  • calculer number * b + digit revient à passer de la base b base 10 (ligne 7)
  • calculer number // b et number % b revient à faire en passage de la base 10 vers la base b (ligne 14)
  • il est dit explicitement dans l'énoncé qu'il faut faire des divisions successives par deux.

J'ai tronqué le fil de discussion en conséquence. Merci à chacun de rester courtois.

0
baladur13 Messages postés 46973 Date d'inscription mercredi 11 avril 2007 Statut Modérateur Dernière intervention 1 décembre 2024 13 472
23 oct. 2023 à 15:40

Bonjour,

Je pense qu'il est temps de mettre un terme à cette suite de propositions en tout genre et de ce concentrer uniquement sur la question du demandeur.

Encore une fois la question porte sur une conversion d'un chiffre en base 5 vers un chiffre en base 2 sans passer par la base 10 et en utilisant uniquement des divisions.

Pour l'instant, sauf erreur de ma part, une seule réponse allant dans ce sens a été proposée.


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 Ambassadeur 1 556
23 oct. 2023 à 17:31

Finalement, c'est la question qui est hors sujet.

C'est un exercice de calcul écrit, décrit trop sommairement par arw, dans un forum inadéquat.

Ce qui explique que nos réponses ne conduisent pas un algorithme correspondant à l'énoncé.

Si la question avait été "comment faire une division écrite en base 5", nous aurions évidemment rapidement expliqué comment effectuer ce genre d'opération élémentaire.

Sans participation du demandeur, nous nous retrouvons souvent à batailler stérilement à propos de l'interprétation de la demande.

0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié le 23 oct. 2023 à 18:34

Bonjour à tous

Une autre idée sans passer par la base 10  : On compte de 1 à n en base 5 et en parallèle en base 2

https://www.cjoint.com/c/MJxqEW10ZLB

Cdlmnt

0
Utilisateur anonyme
23 oct. 2023 à 20:34

Bonsoir,

oui, mais ça ne respecte pas non plus la consigne de faire des divisions en base 5.

0