Двоичные числа в Python - PullRequest
61 голосов
/ 06 октября 2009

Как я могу сложить, вычесть и сравнить двоичные числа в Python без преобразования в десятичные числа?

Ответы [ 8 ]

110 голосов
/ 06 октября 2009

Вы можете преобразовать строковое представление двоичного файла, используя bin () и 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'
9 голосов
/ 06 октября 2009

Я думаю, вы не понимаете, что такое двоичный файл. Двоичное и десятичное это просто разные представления числа - например, 101 база 2 и 5 база 10 - это одно и то же число. Операции сложения, вычитания и сравнения работают с числами - 101 основание 2 == 5 основание 10, и сложение - это одна и та же логическая операция, независимо от того, на какой базе вы работаете. Тот факт, что ваш интерпретатор Python может хранить вещи как двоичные файлы, внутренне не влияет на работу с ним - если у вас целочисленный тип, просто используйте +, - и т. д.

Если у вас есть строки двоичных цифр, вам придется либо написать собственную реализацию, либо преобразовать их, используя функцию int (binaryString, 2).

7 голосов
/ 06 октября 2009

Если вы говорите о побитовых операторах, то вы после:

~ Not
^ XOR
| Or
& And

В противном случае двоичные числа работают точно так же, как и десятичные числа, потому что числа - это числа, независимо от того, как вы на них смотрите. Единственная разница между десятичной и двоичной кодами заключается в том, как мы представляем эти данные, когда смотрим на них.

3 голосов
/ 06 октября 2009

Двоичные, десятичные, шестнадцатеричные ... база имеет значение только при чтении или выводе чисел, добавление двоичных чисел - это то же самое, что добавление десятичного числа: это просто вопрос представления.

0 голосов
/ 14 марта 2018

х = х + 1 печать (х) а = х + 5 печать (а)

0 голосов
/ 15 декабря 2017

Ниже приведена перезапись ранее опубликованной функции:

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:]
0 голосов
/ 01 июня 2016

Не уверен, что полезно, но я оставляю свое решение здесь:

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"))
0 голосов
/ 12 ноября 2015

Я думаю, вы не понимаете, что такое двоичный файл. Двоичное и десятичное это просто разные представления числа - например, 101 база 2 и 5 база 10 - это одно и то же число. Операции сложения, вычитания и сравнения работают с числами - 101 основание 2 == 5 основание 10, и сложение - это одна и та же логическая операция независимо от того, на какой базе вы работаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...