Index ¦ Archives ¦ Tags ¦ Learning Progress ¦ RSS

Binary to Decimal, Decimal to Binary Converter

Estimated read time: 2 minutes


Introduction

There is nothing new here in terms of algorithms, but it was interesting to figure out how to apply those concepts with Python. This works for integer numbers, but can be easily adapted to convert fractions.

Binary to Decimal

"""
Converts a binary number to a decimal number.
"""


def bin_to_dec(number):
    """Algorithm that converts a binary number to a decimal number.

    Receives and returns a string."""

    # get the index of power of first digit
    # e.g. 1001 → first index power is 3 (2^3)
    first_power = len(number) - 1

    total = 0  # initialize variable to store final result

    # iterate over each number and if it is '1', calculate the value
    # based on its position and add it to the total
    for index, char in enumerate(number):
        if char == '1':
            total += 2 ** (first_power - index)

    # give back the answer to the script
    return total


if __name__ == '__main__':
    # retrieve binary number from input as string to parse
    BIN_NUM = input()

    # pass binary number to algorithm and store the result
    RESULT = bin_to_dec(BIN_NUM)

    # print the solution to the console
    print(RESULT)

Decimal to Binary

"""
Converts a decimal number to a binary number.
"""


def dec_to_bin(number):
    """Algorithm that converts a decimal number to a binary number.

    Receives an integer and returns a string."""

    if number == 0:  # if number is 'zero', the answer is 'zero'
        return 0

    remainders = []  # list that stores the remainders

    # iterate over the initial given decimal and divide it by two
    # until it gets to 'zero'. At each step, add the remainder in
    # the above list
    while number > 0:
        remainders.append(number % 2)
        number = number // 2

    # reverse the list of remainders, as the first remainder is the
    # right most digit in the answer
    remainders.reverse()

    # concatenate all the digits from the list of remainders from left
    # to right to display the final binary number
    answer = ''
    for digit in remainders:
        answer += str(digit)

    # give the answer back to the script
    return answer


if __name__ == '__main__':
    # retrieve decimal number from input as integer
    DEC_NUM = int(input())

    # pass decimal number to algorithm and store the result
    RESULT = dec_to_bin(DEC_NUM)

    # print the solution to the console
    print(RESULT)

Conclusion

This was a very quick programming session that’s been useful to make new concepts stick. The best learning strategies are to test yourself constantly in any way possible and to teach clearly what you know, which is what I tried to do in the end. By the way, I found the course Learning How to Learn on Coursera to be quite satisfying and I would invite you to have a look if that’s a topic you’re interested in!

© Sébastien Lavoie. Built in Python using Pelican v4.5.4. Theme adapted from Giulio Fidente on GitHub.