Простая ошибка. Вам нужно использовать разделение по этажам:
c = c // 2
Это исправит это. Оригинальный c = c/2
превращает ваш c
в float
, который не подходит для больших чисел Сравните:
>>> int(914136090224822879032 / 2)
457068045112411422720
>>> 914136090224822879032 // 2
457068045112411439516
С этим изменением вы получите:
>>> add_binary(800998058044843321128,113138032179979557904)
'1100011000111000101111110010101100001001000111000000001000001100111000'
, если вам нужна короткая версия:
def add_binary(a, b):
return '{:b}'.format(a+b)