Вы можете считать до числа, начиная с 0
и добавляя 1
, пока не закончите.Поскольку вы уже определили двоичный файл add
, вам нужно только добавить цикл:
def binary_range(stop: str):
"""Count `stop` times"""
current = '0'
while stop != current:
yield current
current = add_binary_nums(current, '1')
Этого достаточно, чтобы сделать что-то "n раз".Теперь вы можете сделать «a * b» как «добавить a к себе b раз»:
def binary_mul(a: str, b: str):
"""Multiplay the binary ``a`` by the binary ``b``"""
result = '0'
for _ in binary_range(b):
result = add_binary_nums(result, a)
return result
Если вы не заботитесь о построении двоичного калькулятора, используйте Python для преобразования двоичного числа в целые числаили наоборот.int(bin_string, 2)
преобразует строку, такую как "01101"
, в соответствующее целое число, а bin(integer)
преобразует ее обратно в "0b01101"
.
Например, двоичное умножение, которое принимает и возвращает строки, выглядит следующим образом:
def binary_mul(a: str, b: str):
return bin(int(a, 2) * int(b, 2))[:2]