Двоичная арифметика python

У меня следующее задание: реализовать двоичную арифметику (сложение, вычитание, сравнение) на python без библиотек. Я реализовал сложение следующим образом:

number1 = str(input("Введите первое число в 2ой системе: "))
number2 = str(input("Введите второе число в 2ой системе: "))
intSum = int(number1, 2) + int(number2, 2)
result = bin(intSum)[2:]
print(result)

Загвоздка в том, что мне дана подсказка: "генерировать число с 7,8 разрядов и каждое число записывать в массивы А и В". Что мне нужно переделать? Я совсем не понимаю, чего от меня хотят в подсказке


Ответы (2 шт):

Автор решения: Roman Konoval

От вас хотят чтобы вы сами рализовали операции в двоичной арифметике, а не преобразовали число средствами питон. Т.е. нужно хранить число побитово (именно об этом требование "записывать в массивы") и с числами в таком представлении уже оперировать.

→ Ссылка
Автор решения: Zhihar

вы не первый, кто сегодня хочет двоичную арифметику на питоне :)

на счет вопроса - вам же сказано - хранить число в массиве и работать с массивом чисел 0/1, а вы считили - строку перевели в число, а потом обратно в строку

нет уж - делайте все до конца как требуется

# получить бинарное число в виде массива чисел (бит)
num1 = [*map(int, input("Введите первое число в 2ой системе: "))]
num2 = [*map(int, input("Введите второе число в 2ой системе: "))]

# перевернуть числа для удобства выполнения операций
num1 = num1[::-1]
num2 = num2[::-1]

# дополнить числа нулями
size = max(len(num1), len(num2))

num1 += [0] * (size - len(num1))
num2 += [0] * (size - len(num2))

# сложить 2 числа
overflow = 0
res = []
for obj in zip(num1, num2):
    value = obj[0] + obj[1] + overflow
    overflow = value // 2
    res.append(value % 2)

# если флаг переполнения установлен - добавить бит в начало нового числа
if overflow == 1:
    res.append(1)

# перевернуть число назад
res = res[::-1]

print(''.join(map(str, res)))
→ Ссылка