# Python Program to Add Two Binary Numbers

In this article, you will learn and get code to add two binary numbers entered by user using a Python program. Here are the list of programs on binary number addition:

• Add Two Binary Numbers Directly
• Add Two Binary Numbers using User-based Code

### How to Add Two Binary Numbers ?

Here are the rules for binary number addition:

```1 + 0 = 1
0 + 1 = 1
0 + 0 = 0
1 + 1 = 10 (0 and carry 1)
1 + 1 + 1 = 11 (1 and carry 1)```

For example

```  1 1 1 0 1
+ 1 1 1 1 1
-----------
1 1 1 1 0 0```

## Add Two Binary Numbers Directly

This program find and prints the sum of two given binary numbers in a direct way. Here direct way means, this program is created using int() and bin(), pre-defined function of Python. Let's have a look at the program. I'll explain it later on:

```# ----codescracker.com----

print("Enter First Binary Number: ")
nOne = int(input())
print("Enter Second Binary Number: ")
nTwo = int(input())

nOne = str(nOne)
nTwo = str(nTwo)
iSum = int(nOne, 2) + int(nTwo, 2)
bSum = bin(iSum)

print("Result = " + bSum)```

Here is its sample run:

Now supply any two binary numbers say 1110 as first and 1111 as second binary number. Here is the sample run with exactly same input:

That is, 1110 + 1111 = 11101 or 0b1110 + 0b1111 = 0b11101.

Note - The int(num, 2) returns a decimal integer equivalent of binary number stored in num. Here 2 is the base of number stored in num

Therefore the following statement:

`iSum = int(nOne, 2) + int(nTwo, 2)`

converts nOne and nTwo into its decimal integer equivalent and adds them. Its addition result gets initialized to iSum variable. And using bin() method, we've converted the decimal integer value into its equivalent binary number.

Note - The bin() returns binary equivalent string of an integer passed as its argument.

The dry run of above program with user input 1110 and 1111 goes like:

• When user enters these two binary numbers, it gets stored in nOne and nTwo respectively. So nOne=1110 and nTwo=1111
• Now using nOne = str(nOne), nOne's value becomes a string value. That is, the type of nOne gets changed to a string type. Similar thing happend with nTwo
• Then using iSum = int(nOne, 2) + int(nTwo, 2)
int(nOne, 2) + int(nTwo, 2) or 14 + 15 or 29 gets initialized to iSum. As already told that, int(nOne, 2) returns a decimal integer equivalent of value stored in nOne
• Finally using bin(iSum), the value 29 gets converted into binary equivalent string, that is 0b11101. 11101 is binary equivalent of 29
• Now just print the value of iSum as addition result of two entered binary numbers

#### Modified Version of Previous Program

This program is the modified version of previous program with some better looking output:

```# ----codescracker.com----

print(end="Enter First Binary Number: ")
nOne = int(input())
print(end="Enter Second Binary Number: ")
nTwo = int(input())

nOne = str(nOne)
nTwo = str(nTwo)
iSum = int(nOne, 2) + int(nTwo, 2)
bSum = bin(iSum)

print("\n" + nOne + " + " + nTwo + " = " + bSum[2:])```

Here is its sample run with user input, 111 as first and 111 as second binary number:

Note - The bSum[2:] is used to print from 2nd index. It is used to skip 0b of bSum. That is 0 is at 0th and b is at 1st index.

## Add Two Binary Numbers using User-Defined Code

This program is created with complete user-based code to add two binary numbers entered by user. Because in this program, we've not used any type of pre-defined function:

```# ----codescracker.com----

print(end="Enter First Binary Number: ")
nOne = int(input())
print(end="Enter Second Binary Number: ")
nTwo = int(input())

nOne = str(nOne)
nTwo = str(nTwo)
mLen = max(len(nOne), len(nTwo))
nOne = nOne.zfill(mLen)
nTwo = nTwo.zfill(mLen)
carry = 0

for i in range(mLen - 1, -1, -1):
re = carry
if nOne[i] == '1':
re = re+1
else:
re = re+0
if nTwo[i] == '1':
re = re+1
else:
re = re+0
if re%2==1:
else:
if re<2:
carry = 0
else:
carry = 1

if carry!=0:

Here is its sample run, 11101 as first and 11111 as second binary number:

Note - The zfill() method is used to add zeros (0) at beginning of the string. Its length is specified through its argument.

Note - The max() returns the maximum number from numbers provided as its argument.

#### Modified Version of Previous Program

This program is again the modified version of previous program. In this program, we've shorten the logical code to create the program that looks little smaller than previous one:

```# ----codescracker.com----

print(end="Enter First Binary Number: ")
nOne = int(input())
print(end="Enter Second Binary Number: ")
nTwo = int(input())

nOne = str(nOne)
nTwo = str(nTwo)
mLen = max(len(nOne), len(nTwo))
nOne = nOne.zfill(mLen)
nTwo = nTwo.zfill(mLen)
carry = 0

for i in range(mLen - 1, -1, -1):
re = carry
re += 1 if nOne[i] == '1' else 0
re += 1 if nTwo[i] == '1' else 0