I'm trying to add two binary numbers together without converting the numbers to decimal form. This has been difficult because you must add the carries as well. What am I missing?
def sameSingleLengthAdd(bin1 , bin2):
if len(bin1) > len(bin2):
minus = len(bin1) - len(bin2)
newBin2
return addAll(bin1, newBin2)
elif len(bin2) > len(bin1):
minus1 = len(bin2)- len(bin1)
newBin1 = '0'*minus1 + bin1
return addAll(newBin1, bin2)
def singleAdd(int1, int2):
addThem = int(int1) + int(int2)
if addThem == 2:
return '0'
else:
return '1'
def addAll(bin1, bin2):
if len(bin1)== 0:
return ''
else:
return addAll(bin1[:-1], bin2[-1]) + singleAdd(bin1[-1], bin2[-1])
def sameCarryLengthAdd(bin1 , bin2):
if len(bin1) > len(bin2):
minus = len(bin1) - len(bin2)
newBin2
return carries(bin1, newBin2)
elif len(bin2) > len(bin1):
minus1 = len(bin2)- len(bin1)
newBin1 = '0'*minus1 + bin1
return carries(newBin1, bin2)
else: return carries(bin1, bin2)
def carries(bin1, bin2):
addThem = int(bin1[-1]) + int(bin2[-1])
if len(bin1) == 0:
return ''
elif addThem == 2:
return carries(bin1[:-1], bin2[:-1]) + '10'
else:
return carries(bin1[:-1], bin2[:-1]) + '0'
def addBinary(bin1, bin2):
carriedBin = sameCarryLengthAdd(bin1, bin2)
otherNum = sameSingleLengthAdd(bin1, bin2)
return sameSingleLengthAdd(carriedBin, otherNum )