Двоичные числа в Python

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

Ответ 1

Вы можете преобразовать между строковым представлением двоичного файла с помощью 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'

Ответ 2

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

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

Ответ 3

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

~ Not
^ XOR
| Or
& And

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

Ответ 4

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

Ответ 5

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

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:]

Ответ 6

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

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"))

Ответ 7

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