Вы можете привести несколько примеров того, чего пытаетесь достичь?
Джон Ла Рой,
8
числа в Python уже являются двоичными. Они преобразуются в двоичный код при запуске вашей программы и преобразуются обратно в десятичный только тогда, когда вы используете что-то вроде str () или print
Джон Ла Рой,
Ответы:
142
Вы можете преобразовать строковое представление двоичного файла с помощью 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'
Спасибо. Да, это домашнее задание. В назначении указано, что я должен оставлять числа в «двоичном формате» при выполнении ._add, ._sub, ._gt, ._lt и ._eq. Ваш пример выше, похоже, преобразуется из bin в int. Я не уверен, будет ли это приемлемо, но я не вижу другого выхода, кроме вашего примера.
7
Вы также можете использовать двоичный литерал при использовании Python 2.6 и выше. Вместо того, int('01100111',2)чтобы писать 0b01100111например, что есть 103.
Джошуа
9
Я думаю, вы не понимаете, что такое двоичный файл. Двоичное и десятичное - это просто разные представления числа - например, 101 с основанием 2 и 5 с основанием 10 - это одно и то же число. Операции сложения, вычитания и сравнения работают с числами - 101 база 2 == 5 основание 10, а сложение - это одна и та же логическая операция независимо от того, на какой базе вы работаете. Тот факт, что ваш интерпретатор python может хранить вещи как двоичные внутри, не не влияет на то, как вы с ним работаете - если у вас целочисленный тип, просто используйте +, - и т. д.
Если у вас есть строки двоичных цифр, вам придется либо написать свою собственную реализацию, либо преобразовать их с помощью функции int (binaryString, 2).
Если вы говорите о побитовых операторах, то вам нужно:
~ Not
^ XOR
| Or
& And
В остальном двоичные числа работают точно так же, как десятичные числа, потому что числа - это числа, как бы вы на них ни смотрели. Единственная разница между десятичным и двоичным числами заключается в том, как мы представляем эти данные, когда смотрим на них.
Всегда интересно писать add, sub и т. Д. С помощью побитовых операторов. Для всех, кто интересуется этим, поищите руководства по схемам, в частности, полусумматоры, затем полные сумматоры и, наконец, вычитатель, может быть, даже сумматор-вычитатель. Отсюда вы можете перевести его в побитовые операторы.
Horse SMith
3
Двоичное, десятичное, шестнадцатеричное ... основание имеет значение только при чтении или выводе чисел, добавление двоичных чисел ничем не отличается от добавления десятичного числа: это просто вопрос представления.
Я думаю, вы не понимаете, что такое двоичный файл. Двоичное и десятичное - это просто разные представления числа - например, 101 с основанием 2 и 5 с основанием 10 - это одно и то же число. Операции сложения, вычитания и сравнения работают с числами - 101 основание 2 == 5 основание 10, а сложение - это одна и та же логическая операция, независимо от того, с какой базой вы работаете.
Я думаю, вы неправильно истолковываете вопрос. OP искал способ читать / управлять числами в двоичном представлении и заставить их взаимодействовать с числами в целочисленном представлении.
Ответы:
Вы можете преобразовать строковое представление двоичного файла с помощью 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'
источник
int('01100111',2)
чтобы писать0b01100111
например, что есть103
.Я думаю, вы не понимаете, что такое двоичный файл. Двоичное и десятичное - это просто разные представления числа - например, 101 с основанием 2 и 5 с основанием 10 - это одно и то же число. Операции сложения, вычитания и сравнения работают с числами - 101 база 2 == 5 основание 10, а сложение - это одна и та же логическая операция независимо от того, на какой базе вы работаете. Тот факт, что ваш интерпретатор python может хранить вещи как двоичные внутри, не не влияет на то, как вы с ним работаете - если у вас целочисленный тип, просто используйте +, - и т. д.
Если у вас есть строки двоичных цифр, вам придется либо написать свою собственную реализацию, либо преобразовать их с помощью функции int (binaryString, 2).
источник
Если вы говорите о побитовых операторах, то вам нужно:
В остальном двоичные числа работают точно так же, как десятичные числа, потому что числа - это числа, как бы вы на них ни смотрели. Единственная разница между десятичным и двоичным числами заключается в том, как мы представляем эти данные, когда смотрим на них.
источник
Двоичное, десятичное, шестнадцатеричное ... основание имеет значение только при чтении или выводе чисел, добавление двоичных чисел ничем не отличается от добавления десятичного числа: это просто вопрос представления.
источник
Ниже приводится перезапись ранее опубликованной функции:
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:]
источник
''' 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'))
Я оставляю функцию вычитания в качестве упражнения для читателя.
источник
Не уверен, что это поможет, но я оставляю свое решение здесь:
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"))
источник
x = x + 1 print (x) a = x + 5 print (a)
источник
Я думаю, вы не понимаете, что такое двоичный файл. Двоичное и десятичное - это просто разные представления числа - например, 101 с основанием 2 и 5 с основанием 10 - это одно и то же число. Операции сложения, вычитания и сравнения работают с числами - 101 основание 2 == 5 основание 10, а сложение - это одна и та же логическая операция, независимо от того, с какой базой вы работаете.
источник