Как я могу добавлять, вычитать и сравнивать двоичные числа в 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, а добавление - это одна и та же логическая операция, независимо от того, в какой базе вы работаете.