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 ?

0voto

user3159059 Points 19
'''
I expect the intent behind this assignment was to work in binary string format.
This is absolutely doable.
'''

def compare(bin1, bin2):
    return bin1.lstrip('0') == bin2.lstrip('0')

def add(bin1, bin2):
    result = ''
    blen = max((len(bin1), len(bin2))) + 1
    bin1, bin2 = bin1.zfill(blen), bin2.zfill(blen)
    carry_s = '0'
    for b1, b2 in list(zip(bin1, bin2))[::-1]:
        count = (carry_s, b1, b2).count('1')
        carry_s = '1' if count >= 2 else '0'
        result += '1' if count % 2 else '0'
    return result[::-1]

if __name__ == '__main__':
    print(add('101', '100'))

Je laisse le func de soustraction comme un exercice pour le lecteur.

-1voto

Mr Keprins Points 1

Par exemple, 00000011 - 00000001 = 00000010

Vous pouvez enlever les zéros et les ajouter à nouveau après avoir fait votre calcul ! Cela fonctionne très facilement.

Si votre binaire est stocké sous forme de chaîne, vous pouvez le convertir en int, ce qui supprimera automatiquement les zéros au début. Une fois que vous avez votre réponse, vous pouvez la retransformer en chaîne et ajouter les zéros au début.

-2voto

Mona Jalal Points 1207

Je ne sais pas si c'est utile, mais je laisse ma solution ici :

class Solution:
    # @param A : string
    # @param B : string
    # @return a strings
    def addBinary(self, A, B):
        num1 = bin(int(A, 2))
        num2 = bin(int(B, 2))
        bin_str = bin(int(num1, 2)+int(num2, 2))
        b_index = bin_str.index('b')
        return bin_str[b_index+1:]

s = Solution()
print(s.addBinary("11", "100"))

-6voto

user9491697 Points 1

X = x + 1 print(x) a = x + 5 print(a)

-8voto

user5554869 Points 15

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.

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