Отличный трюк для преобразования из дополнения до двух - найти 1 с конца и заменить остальные биты их дополнением.
def convert_from_twosc(bits):
bits = bits[::-1]
for bit in bits:
if bit == '1':
for new_bit in range(bits.index(bit) + 1, len(bits)):
if bits[new_bit] == '0':
bits[new_bit] = '1'
else:
bits[new_bit] = '0'
break
return "".join(map(str, bits[::-1]))
bits = input()
number = int(convert_from_twosc(list(bits)) , 2) * -1
print(number)
Выход:
11101111010110011000000000000001
-279347199
Эта функция всегда предполагает ввод, является отрицательным числом со знаком, поэтому будьте осторожны.