Converting Decimal Numbers to Binary Numbers Using Stacks

This code will take an integer decimal number and convert it to a binary number. Here stack is used to reverse the remainder to output the binary number.

class Stack:
    def __init__(self):
        self.items = [] #create new list with no items
    def __repr__(self):
        return repr(self.items) #define what to return is the stackname is called
    def isEmpty(self):
        return self.items == [] #check whether list if empty and retuen T or F
    def size(self):
        return len(self.items) #return size of stack (= length of list)
    def push(self,val):
        self.items.append(val) #add the argument pass to the end of list
    def pop(self):
        return self.items.pop() #return the last item in list because index not specified
    def peek(self):
        return self.items[-1] #return last item (-1 because from right indices are negative)

NumDec=0    #initialize as int
NumBin=''   #initialize as string

NumDec=int(input("Please enter the integer to convert : ")) #assign the Number to variable
print ("Decimal Number = ",NumDec)

thestack=Stack()    #create the stack

while NumDec>0 :    #loop till the number we divide is 1 or 0
    thestack.push(NumDec%2) #add the remainder when divide by 2 to stack
    NumDec=NumDec//2    #change the number to be divide to the whole number when divided by 2

while thestack.isEmpty()==False:    #loop till stack become empty
    NumBin=NumBin+str(thestack.pop())   #add the item to string
print("Binary Number = ",NumBin)



The owner of [] will not be liable for any errors or omissions in this information nor for the availability of this information. The owner will not be liable for any losses, injuries, or damages from the display or use of this information.
This terms and conditions are subject to change at anytime with or without notice.


Proud UCSCian | Proud Devan | Computer Geek | Superman | Love Chess & Programming

2 thoughts on “Converting Decimal Numbers to Binary Numbers Using Stacks

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.