Pensez à lire la Charte avant de poster !

$\newcommand{\K}{\mathbf K}$


Les-Mathematiques.net - Cours de mathématiques supérieures
 Les-Mathematiques.net - Cours de mathématiques universitaires - Forum - Cours à télécharger

A lire
Deug/Prépa
Licence
Agrégation
A télécharger
Télécharger
180 personne(s) sur le site en ce moment
E. Cartan
A lire
Articles
Math/Infos
Récréation
A télécharger
Télécharger
Théorème de Cantor-Bernstein
Théo. Sylow
Théo. Ascoli
Théo. Baire
Loi forte grd nbre
Nains magiques
 
 
 
 
 

Binaire vers décimal Python

Envoyé par Grayford77 
Binaire vers décimal Python
il y a deux années
Salut,

Je veux coder une fonction dans Sage qui prend une liste (de 0 et 1) en entrée et retourne le nombre en décimal.

Voici mon code

def BinDec (b) :

    n=0

    for i in range (len(b)):

        n=n+b[len(b)-(i+1)]*(2^i) 

    return n

Mathématiquement ça doit être bon (j'espère), sauf que quand je teste sur n'importe quelle liste ça me renvoie... 1!

BinDec([1,0,1]) = 1...

Je ne comprends pas absolument pas pourquoi...

Si quelqu'un peut m'aider, merci !



Edité 1 fois. La dernière correction date de il y a deux années et a été effectuée par jacquot.
Re: Binaire vers Decimal python
il y a deux années
Bonsoir,

En Python, et Sage fait du python $0b11111100001$ donne $2017$.

Cordialement,

Rescassol
Re: Binaire vers Decimal python
il y a deux années
avatar
L’opérateur de puissance est ** en Python, pas ^.

Sinon, int("".join(map(str,b)),2) devrait fonctionner.

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-



Edité 2 fois. La dernière correction date de il y a deux années et a été effectuée par nicolas.patrois.
Re: Binaire vers Decimal python
il y a deux années
"Sage fait du Python" c'est vite dit... C'est une surcouche de Python qui ne fait pas tout à fait du Python. Tous les entiers du code sont par exemples remplacés par des "entiers Sage".

En particulier, Sage est aussi sensé transformer ^ en ** sur les entiers (le ^ en Python entre les entiers correspond au "et bit à bit" et non à la puissance). Le code que tu as posté ici Grayford doit normalement fonctionner sous Sage mais pas sous Python.
Re: Binaire vers Decimal python
il y a deux années
Citation
sebsheep
le ^ en Python entre les entiers correspond au "et bit à bit"
Non, c'est un xor bit à bit. Le et bit à bit est &.
Re: Binaire vers décimal Python
il y a deux années
Merci, pour les réponses mais le ^ ou le ** ne marchent pas.
Je précise : je suis bien avec Sage, désolé si cela vous a gêné mais je pensais que Python était ce que Sage utilisait (entre autre).

Et ma fonction prend en entrée une liste (c'est imposé par une autre fonction), je ne peux donc pas convertir directement avec int("".join(map(str,b)),2) (si j'ai bien compris...)

Quant à 0b11110001, c'est 0b la fonction ?

Quelqu'un peut-il copier-coller voir si cela vient de chez moi ?

Merci.



Edité 1 fois. La dernière correction date de il y a deux années et a été effectuée par AD.
Re: Binaire vers décimal Python
il y a deux années
Il serait plus élégant d'appliquer l'algorithme de Horner pour évaluer en 2 la liste des entiers vus comme coefficients d'un polynôme.



Edité 1 fois. La dernière correction date de il y a deux années et a été effectuée par AD.
Re: Binaire vers Decimal python
il y a deux années
avatar
Je confirme, l’algorithme de Horner marche très bien.
Cela dit, tu peux coder ta fonction ainsi :
def BinDec(b):
  return int("".join(map(str,b)),2)

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquer ici pour vous connecter

Liste des forums - Statistiques du forum

Total
Discussions: 134 911, Messages: 1 300 477, Utilisateurs: 23 507.
Notre dernier utilisateur inscrit etudiant_lambda.


Ce forum
Discussions: 2 233, Messages: 16 544.

 

 
©Emmanuel Vieillard Baron 01-01-2001
Adresse Mail:

Inscription
Désinscription

Actuellement 16057 abonnés
Qu'est-ce que c'est ?
Taper le mot à rechercher

Mode d'emploi
En vrac

Faites connaître Les-Mathematiques.net à un ami
Curiosités
Participer
Latex et autres....
Collaborateurs
Forum

Nous contacter

Le vote Linux

WWW IMS
Cut the knot
Mac Tutor History...
Number, constant,...
Plouffe's inverter
The Prime page