Python Decimal to Binary Conversion

Beginner
6 min read
Updated: Oct 2026
2 programs
Live preview

What Is Decimal to Binary Conversion?

Decimal (base 10) is the everyday number system. Binary (base 2) uses only bits 0 and 1. Conversion means rewriting a decimal integer as a string of bits.

Remember
Divide by 2 → remainder is the next bit (LSB first)
Reverse the remainders → MSB … LSB binary string

Example: 13
  13 ÷ 2 = 6 rem 1
   6 ÷ 2 = 3 rem 0
   3 ÷ 2 = 1 rem 1
   1 ÷ 2 = 0 rem 1
  Remainders (LSB→MSB): 1 0 1 1
  Binary (MSB→LSB):     1101
DecimalBinaryCheck
00special case
1311018+4+1
4210101032+8+2

How to Convert Decimal to Binary in Python

Four clear steps — then pick a remainder loop or the built-in formatter.

  1. Handle n == 0 by returning "0".
  2. While n > 0, record n % 2 and set n = n // 2.
  3. Reverse the collected remainders (or build the string from the front).
  4. Or call bin(n)[2:] / format(n, "b") for a one-line answer.
MethodIdeaTimeBest for
Remainder loopDivide by 2; reverse remaindersO(log n)Interviews, learning place values
bin(n)[2:]Built-in base-2 formattingO(log n)Production code, short answers

Pseudocode

Pseudocode
function DecimalToBinary(n):
    if n == 0:
        return "0"

    bits = empty list
    while n > 0:
        bits.append(n mod 2)
        n = n / 2

    reverse bits
    return join(bits)

Cheat Sheet

Keep these facts handy while writing the program.

TopicDetail
OperationDivide by 2; remainder is a bit
First remainderLSB (rightmost bit)
ZeroReturn "0" — do not skip
Built-inbin(n)[2:] or format(n, "b")
NegativesUsually restrict to n >= 0 in tutorials
Classic check13 → 1101

Live Preview

Enter a nonnegative integer to see the remainder steps and the binary result.

Nonnegative integers (capped at 2147483647). Tap a chip or type a value.

Result
n = 13
Remainders (LSB first): 1, 0, 1, 1
Binary = 1101

Worked Walkthrough — n = 13

Divide by 2 until the quotient is 0. Collect remainders, then reverse.

Calculation
13 ÷ 2 = 6  remainder 1   ← LSB
 6 ÷ 2 = 3  remainder 0
 3 ÷ 2 = 1  remainder 1
 1 ÷ 2 = 0  remainder 1   ← MSB

Remainders collected: 1 0 1 1
Reversed binary:      1 1 0 1  →  1101

Check: 8 + 4 + 0 + 1 = 13

Python Programs

Start with the remainder loop so you can explain every bit. Then use bin / format for a short production-style answer.

Example 1 — Remainder Loop

Collect n % 2 values, then reverse them into a binary string.

python
def decimal_to_binary(n: int) -> str:
    if n < 0:
        raise ValueError("Use a nonnegative integer.")
    if n == 0:
        return "0"

    bits = []
    while n > 0:
        bits.append(str(n % 2))
        n //= 2

    return "".join(reversed(bits))


number = 13
print(f"{number} → {decimal_to_binary(number)}")

How It Works

  1. Reject negatives for this beginner version; return "0" immediately when n is zero.
  2. Each n % 2 is the next bit from the right (LSB first).
  3. n //= 2 shifts toward higher bits until the quotient becomes 0.
  4. reversed(bits) then "".join builds the string MSB to LSB.
  5. For 13, remainders 1,0,1,1 reverse to 1101.

Example 2 — bin() / format

Let Python format the integer as base 2 after a quick nonnegative check.

python
def decimal_to_binary(n: int) -> str:
    if n < 0:
        raise ValueError("Use a nonnegative integer.")
    return bin(n)[2:]
    # or: return format(n, "b")


print(decimal_to_binary(13))  # 1101
print(decimal_to_binary(42))  # 101010
print(decimal_to_binary(0))   # 0

How It Works

  1. Keep the same nonnegative rule as the manual method.
  2. bin(n) returns a string like "0b1101"; [2:] drops the prefix.
  3. format(n, "b") is an equivalent alternative without the 0b prefix.
  4. Zero is handled correctly and returns "0".
  5. Use the loop in interviews when you must show the math; use bin/format in real projects.

Edge Cases & Pitfalls

Check these before calling the solution done.

n = 0

Return "0"

A bare while n > 0 loop produces an empty string otherwise.

Reverse

LSB comes first

Printing remainders in collection order yields the bits backwards.

Negatives

Define the policy

Tutorials usually require n >= 0. Two’s complement needs a fixed width.

Width

Minimal vs padded

Default output drops leading zeros. Pad only when the problem asks for 8/16/32 bits.

Time and Space Complexity

ProgramTimeExtra space
Remainder loopO(log n)O(log n) for the bit list
bin / formatO(log n)O(log n) for the result string

Key Takeaways

  • Method: divide by 2; remainders are bits (LSB first).
  • Reverse: print from last remainder to first for normal binary.
  • Built-in: bin(n)[2:] after you know the algorithm.
  • Test set: 0 → 0; 13 → 1101; 42 → 101010.

One line: collect n % 2 remainders and reverse them — or call bin(n)[2:].

Frequently Asked Questions

Repeatedly divide by 2 and collect remainders (LSB first), then reverse them — or call bin(n)[2:] / format(n, 'b') for nonnegative integers.
The first remainder is the least significant bit. Printing from last remainder to first gives the usual left-to-right binary string.
Handle n == 0 separately and return "0". A while n > 0 loop would otherwise produce an empty string.
bin(n) returns a string like '0b1101'. Slice off the '0b' prefix with bin(n)[2:], or use format(n, 'b') for the bits alone.
Both methods are O(b), where b is the number of output bits — about O(log n) for positive n.

Next: Decimal to Octal

Convert a base-10 integer into base 8 with divide-by-8 remainders.

Decimal to octal tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

6 people found this page helpful