Base 2 à base 4
Leen_05
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Leen_05 -
Leen_05 -
Bonjour!
Je dois faire un programme qui permet de convertir des nombres binaires en nombre de base 4 sans passer par la base 10 en python mais je suis bloquée!
Voici mon programme:
Merci pour tout!
Je dois faire un programme qui permet de convertir des nombres binaires en nombre de base 4 sans passer par la base 10 en python mais je suis bloquée!
Voici mon programme:
#programme base 2 à base 4: from math import* def b2tob4(): l=int(input("Combien y a t-il de chiffre dans votre nombre binaire? \n")) binaire=[] binaire.append(input("Entrez le premier chiffre de votre nombre binaire: ")) for i in range(2,l+1): binaire.append(input("Entrez le chiffre suivant de votre nombre binaire: ")) print(binaire) # à supprimer à la fin binaire.reverse() print(binaire) # à supprimer à la fin for i in range(0,l): binaire[i]=binaire[i]*(2**i) #pb: 1*2**1=2 et affiche 11, il affiche 2 fois le chiffre 1! i=i+1 print(binaire) # à supprimer à la fin #2^0 et 2^1 donne 4^0; 2^2 et 2^3 donne 4^1 ... # if 2**i <= 4: #2**i=4**0
Merci pour tout!
A voir également:
- Voici une base de données présentant la programmation d'un théâtre. elle comporte 4 tables : pieces, seances, categories, tarifs. combien de pièces de danse et de pièces de musique, en tout, ont un tarif réduit strictement inférieur à 15 euros ?
- Telecharger toutes les pieces jointes gmail - Guide
- Supprimer les données de navigation - Guide
- Application de programmation - Guide
- Code de triche gta 4 - Guide
- Télécharger musique gratuitement sur pc - Télécharger - Conversion & Extraction
3 réponses
Je ne parle pas Python, mais si tu représentes tes nombres par une suite de bits, la base 2 s'obtient en prenant les bits 1 à 1, et la base 4 en les prenant 2 à 2.
Exemple :
base 2 = 10110001 = 1 0 1 1 0 0 0 1
base 4 = 10 11 00 01 = 2301
Exemple :
base 2 = 10110001 = 1 0 1 1 0 0 0 1
base 4 = 10 11 00 01 = 2301
Oui c'est super simple il suffit de regrouper les bits par deux, pas besoin de passer par la base 10 donc.
En utilisant un petit dictionnaire voici ce que çà donne ( cette méthode ne marche qu'avec les nombres binaires entiers ) :
Universale.
En utilisant un petit dictionnaire voici ce que çà donne ( cette méthode ne marche qu'avec les nombres binaires entiers ) :
def tobase4 ( n, result = '' ) : if ( len ( n ) % 2 == 1 ) : n = '0' + n converter = { '00' : '0', '01' : '1', '10' : '2', '11' : 3 } for x in xrange ( len ( n ) / 2 ) : result += converter [ n [ x * 2 : x * 2 + 2 ] ] return result print tobase4 ( '1001' ) # 21
Universale.