Python Forum
16-bit Adder made from logic gates
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
16-bit Adder made from logic gates
#1
def nandgate(a, b):
	if a == 0 and b == 0:
		return 1
	if a == 1 and b == 0:
		return 1
	if a == 0 and b == 1:
		return 1
	if a == 1 and b == 1:
		return 0

def invert(x):
	return nandgate(x, x)

def andgate(a, b):
	return invert(nandgate(a, b))

def orgate(a, b):
	return invert(andgate(invert(a), invert(b)))

def xorgate(a, b):
	return invert(orgate(invert(orgate(a, b)), andgate(a, b)))

def addtwo(a, b):
	return andgate(a, b), xorgate(a, b)

def addthree(a, b, c):
	return orgate(addtwo(a, b)[0], andgate(addtwo(a, b)[1], c)), xorgate(addtwo(a, b)[1], c)

def multiadder(aFifteen, aFourteen, aThirteen, aTwelve, aEleven, aTen, aNine, aEight, aSeven, aSix, aFive, aFour, aThree, aTwo, aOne, aZero, bFifteen, bFourteen, bThirteen, bTwelve, bEleven, bTen, bNine, bEight, bSeven, bSix, bFive, bFour, bThree, bTwo, bOne, bZero, c):
        return addthree(aFifteen, bFifteen, addthree(aFourteen, bFourteen, addthree(aThirteen, bThirteen, addthree(aTwelve, bTwelve, addthree(aEleven, bEleven, addthree(aTen, bTen, addthree(aNine, bNine, addthree(aEight, bEight, addthree(aSeven, bSeven, addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0], addthree(aFifteen, bFifteen, addthree(aFourteen, bFourteen, addthree(aThirteen, bThirteen, addthree(aTwelve, bTwelve, addthree(aEleven, bEleven, addthree(aTen, bTen, addthree(aNine, bNine, addthree(aEight, bEight, addthree(aSeven, bSeven, addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[1], addthree(aFourteen, bFourteen, addthree(aThirteen, bThirteen, addthree(aTwelve, bTwelve, addthree(aEleven, bEleven, addthree(aTen, bTen, addthree(aNine, bNine, addthree(aEight, bEight, addthree(aSeven, bSeven, addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[1], addthree(aThirteen, bThirteen, addthree(aTwelve, bTwelve, addthree(aEleven, bEleven, addthree(aTen, bTen, addthree(aNine, bNine, addthree(aEight, bEight, addthree(aSeven, bSeven, addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[1], addthree(aTwelve, bTwelve, addthree(aEleven, bEleven, addthree(aTen, bTen, addthree(aNine, bNine, addthree(aEight, bEight, addthree(aSeven, bSeven, addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[1], addthree(aEleven, bEleven, addthree(aTen, bTen, addthree(aNine, bNine, addthree(aEight, bEight, addthree(aSeven, bSeven, addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[1], addthree(aTen, bTen, addthree(aNine, bNine, addthree(aEight, bEight, addthree(aSeven, bSeven, addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[0])[0])[0])[0])[1], addthree(aNine, bNine, addthree(aEight, bEight, addthree(aSeven, bSeven, addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[0])[0])[0])[1], addthree(aEight, bEight, addthree(aSeven, bSeven, addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[0])[0])[1], addthree(aSeven, bSeven, addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[0])[1], addthree(aSix, bSix, addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[0])[1], addthree(aFive, bFive, addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[0])[1], addthree(aFour, bFour, addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[0])[1], addthree(aThree, bThree, addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[0])[1], addthree(aTwo, bTwo, addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[0])[1], addthree(aOne, bOne, addthree(aZero, bZero, c)[0])[1], addthree(aZero, bZero, c)[1]

print("Enter two 2 Base-10 numbers to add. Result will be in binary ")

a = int(input("Enter A "))
a = bin(a)[2:].zfill(16)

b = int(input("Enter B "))
b = bin(b)[2:].zfill(16)

aFifteen = int(a[0])
aFourteen = int(a[1])
aThirteen = int(a[2])
aTwelve = int(a[3])
aEleven = int(a[4])
aTen = int(a[5])
aNine = int(a[6])
aEight = int(a[7])
aSeven = int(a[8])
aSix = int(a[9])
aFive = int(a[10])
aFour = int(a[11])
aThree = int(a[12])
aTwo = int(a[13])
aOne = int(a[14])
aZero = int(a[15])
            
bFifteen = int(b[0])
bFourteen = int(b[1])
bThirteen = int(b[2])
bTwelve = int(b[3])
bEleven = int(b[4])
bTen = int(b[5])
bNine = int(b[6])
bEight = int(b[7])
bSeven = int(b[8])
bSix = int(b[9])
bFive = int(b[10])
bFour = int(b[11])
bThree = int(b[12])
bTwo = int(b[13])
bOne = int(b[14])
bZero = int(b[15])
            
c = 0

print(multiadder(aFifteen, aFourteen, aThirteen, aTwelve, aEleven, aTen, aNine, aEight, aSeven, aSix, aFive, aFour, aThree, aTwo, aOne, aZero, bFifteen, bFourteen, bThirteen, bTwelve, bEleven, bTen, bNine, bEight, bSeven, bSix, bFive, bFour, bThree, bTwo, bOne, bZero, c))

exit = input("")
Reply


Messages In This Thread
16-bit Adder made from logic gates - by Iskuss - Oct-03-2019, 04:57 PM
RE: 16-bit Adder made from logic gates - by Larz60+ - Nov-12-2019, 10:49 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020