117 votes

Les nombres binaires en Python

Comment puis-je ajouter, soustraire et comparer des nombres binaires en Python sans les convertir en décimal ?

190voto

gnibbler Points 103484

Vous pouvez convertir une chaîne de caractères en représentation binaire en utilisant bin() et int().

>>> bin(88)
'0b1011000'
>>> int('0b1011000', 2)
88
>>> 

>>> a=int('01100000', 2)
>>> b=int('00100110', 2)
>>> bin(a & b)
'0b100000'
>>> bin(a | b)
'0b1100110'
>>> bin(a ^ b)
'0b1000110'

10voto

Steven Schlansker Points 17463

Je pense que vous êtes confus sur ce qu'est le binaire. Le binaire et le décimal sont simplement des représentations différentes d'un nombre - par exemple, 101 en base 2 et 5 en base 10 sont le même nombre. Les opérations d'addition, de soustraction et de comparaison opèrent sur des nombres - 101 base 2 == 5 base 10 et l'addition est la même opération logique quelle que soit la base dans laquelle vous travaillez. Le fait que votre interpréteur python puisse stocker les choses en binaire en interne n'affecte pas la façon dont vous travaillez avec ces nombres - si vous avez un type entier, utilisez simplement +, -, etc.

Si vous avez des chaînes de chiffres binaires, vous devrez soit écrire votre propre implémentation, soit les convertir en utilisant la fonction int(binaryString, 2).

9voto

Smashery Points 13208

Si vous parlez d'opérateurs binaires, alors vous êtes après :

~ Not
^ XOR
| Or
& And

Sinon, les nombres binaires fonctionnent exactement comme les nombres décimaux, car les nombres sont des nombres, quelle que soit la façon dont on les regarde. La seule différence entre les nombres décimaux et binaires est la façon dont nous représentons ces données lorsque nous les regardons.

3voto

Pierre Bourdon Points 3435

Binaire, décimal, hexadécimal... la base n'a d'importance que pour la lecture ou la sortie des nombres, l'addition de nombres binaires est la même que l'addition de nombres décimaux : c'est juste une question de représentation.

0voto

mastueben Points 1

Vous trouverez ci-dessous une réécriture d'une fonction précédemment publiée :

def addBinary(a, b): # Example: a = '11' + b =' 100' returns as '111'.    
    for ch in a: assert ch in {'0','1'}, 'bad digit: ' + ch    
    for ch in b: assert ch in {'0','1'}, 'bad digit: ' + ch    
    sumx = int(a, 2) + int(b, 2)    
    return bin(sumx)[2:]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X