Open In App

Program for Decimal to Binary Conversion

Last Updated : 21 Jun, 2025
Summarize
Comments
Improve
Suggest changes
Share
Like Article
Like
Report

Given a non negative number n, the task is to convert the given number into an equivalent binary representation.

Examples: 

Input: n = 12
Output: "1100"
Explanation: the binary representation of 12 is "1100", since 12 = 1×23 + 1×22 + 0×21+ 0×20 = 12

Input: n = 33
Output: "100001"
Explanation: the binary representation of 33 is "100001", since 1×25 + 0×24 + 0×23 + 0×22 + 0×21 + 1×20 = 33

[Approach - 1] Division by 2 - O(log₂(n)) Time and O(log₂(n)) Space

To convert a decimal number to binary, repeatedly divide it by 2 and record the remainders. Reading these remainders in reverse gives the binary representation.

C++
#include <iostream>
#include <algorithm>
using namespace std;

string decToBinary(int n) {
    
    string bin = "";
    while (n > 0) {
        // checking the mod 
		int bit = n%2;
      	bin.push_back('0' + bit);
        n /= 2;
    }
    
    // reverse the string 
	reverse(bin.begin(), bin.end());
    return bin;
}


int main() {
    int n = 12;
    cout << decToBinary(n);
    return 0;
}
C
#include <stdio.h>
#include <string.h>

// function to reverse the string
void reverse(char *bin, int left, int right) {
    while (left < right) {
        char temp = bin[left];
        bin[left] = bin[right];
        bin[right] = temp;
        left++;
        right--;
    }
}

// function to convert decimal to binary
char* decToBinary(int n) {
    int index = 0;
	char* bin = (char*) malloc(32 * sizeof(char));
  
    while (n > 0) {
        int bit = n % 2;
        bin[index++] = '0' + bit;
        n /= 2;
    }
    bin[index] = '\0';
  
	// Reverse the binary string
	reverse(bin, 0, index-1);
  	return bin;
}

int main() {
    int n = 12;
    char* bin = decToBinary(n);
  
    printf("%s", bin);
    return 0;
}
Java
import java.util.*;

class GfG {
    static String decToBinary(int n) {
        StringBuilder bin = new StringBuilder();

        while (n > 0) {
            int bit = n % 2;
            bin.append((char) ('0' + bit));
            n /= 2;
        }
        
        // reverse the string
        bin.reverse();
        return bin.toString();
    }
    
    public static void main(String[] args) {
        int n = 12;
        System.out.println(decToBinary(n));
    }
}
Python
# function to convert decimal to binary
def decToBinary(n):
    binArr = []

    while n > 0:
        bit = n % 2
        binArr.append(str(bit))
        n //= 2

    # reverse the string
    binArr.reverse()
    return "".join(binArr)

if __name__ == "__main__":
    n = 12
    print(decToBinary(n))
C#
using System;
using System.Collections.Generic;

class GfG {
  
    // function to convert decimal to binary
    static string decToBinary(int n) {
        List<char> bin = new List<char>();

        while (n > 0) {
            int bit = n % 2;
            bin.Add((char)('0' + bit));
            n /= 2;
        }

        // reverse the string
        bin.Reverse();
        return new string(bin.ToArray());
    }
    
    static void Main() {
        int n = 12;
        Console.WriteLine(decToBinary(n));
    }
}
JavaScript
// Function to convert decimal to binary
function decToBinary(n) {
    let bin = [];

    while (n > 0) {
        let bit = n % 2;
        bin.push(String(bit));
        n = Math.floor(n / 2);
    }

    // reverse the string
    bin.reverse();
    return bin.join("");
}

// Driver Code
let n = 12;
console.log(decToBinary(n));

Output
1100

[Approach - 2] Using Head Recursion - O(log₂(n)) Time and O(log₂(n)) Space

The idea is same as the previous approach, but we will use recursion to generate the binary equivalent number.

C++
#include <iostream>
#include <algorithm>
using namespace std;

// Recursive function to convert decimal to binary
void decToBinaryRec(int n, string &bin) {
  	// Base Case
  	if (n==0) 
      	return;
  	
  	// Recur for smaller bits.
  	decToBinaryRec(n/2, bin);
  
  	// Add MSB of current number to the binary string
  	bin.push_back(n%2 + '0');
}

// Function to convert decimal to binary
string decToBinary(int n) {
  	if (n == 0) 
      	return "0";
  
    string bin = "";
  	decToBinaryRec(n, bin);
  	return bin;
}

int main() {
    int n = 12;
    cout << decToBinary(n);
    return 0;
}
Java
class GfG {
  
    // Recursive function to convert decimal to binary
    static void decToBinaryRec(int n, StringBuilder bin) {
        // Base Case
        if (n == 0)
            return;

        // Recur for smaller bits.
        decToBinaryRec(n / 2, bin);

        // Add MSB of current number to the binary string
        bin.append(n % 2);
    }

    // Function to convert decimal to binary
    static String decToBinary(int n) {
        if (n == 0)
            return "0";

        StringBuilder bin = new StringBuilder();
        decToBinaryRec(n, bin);
        return bin.toString();
    }

    public static void main(String[] args) {
        int n = 12;
        System.out.println(decToBinary(n));
    }
}
Python
def decToBinaryRec(n, binArr):
    # Base Case
    if n == 0:
        return
    
    # Recur for smaller bits.
    decToBinaryRec(n // 2, binArr)
    
    # Add MSB of current number to the binary list
    binArr.append(str(n % 2))

# Function to convert decimal to binary
def decToBinary(n):
    if n == 0:
        return "0"

    binArr = []
    decToBinaryRec(n, binArr)
    return "".join(binArr)

if __name__ == "__main__":
    n = 12
    print(decToBinary(n))
C#
using System;
using System.Text;

class GfG {
  	
    // Recursive function to convert decimal to binary
    static void decToBinaryRec(int n, StringBuilder bin) {
        // Base Case
        if (n == 0) 
            return;

        // Recur for smaller bits.
        decToBinaryRec(n / 2, bin);

        // Add MSB of current number to the binary string
        bin.Append(n % 2);
    }

    // Function to convert decimal to binary
    static string decToBinary(int n) {
        if (n == 0) 
            return "0";

        StringBuilder bin = new StringBuilder();
        decToBinaryRec(n, bin);
        return bin.ToString();
    }

    static void Main() {
        int n = 12;
        Console.WriteLine(decToBinary(n));
    }
}
JavaScript
function decToBinaryRec(n, bin) {
    // Base Case
    if (n === 0)
        return;

    // Recur for smaller bits.
    decToBinaryRec(Math.floor(n / 2), bin);

    // Add MSB of current number to the binary string
    bin.push(n % 2);
}

// Function to convert decimal to binary
function decToBinary(n) {
    if (n === 0)
        return "0";

    let bin = [];
    decToBinaryRec(n, bin);
    return bin.join("");
}

// Driver code
let n = 12;
console.log(decToBinary(n));

Output
1100

[Approach - 3] Using Bitwise Operators - O(log₂(n)) Time and O(log₂(n)) Space

Using bitwise operators, we can extract binary digits by checking the least significant bit (n & 1) and then right-shifting the number (n >> 1) to process the next bit.
This method is faster than arithmetic division and modulo, as bitwise operations are more efficient at the hardware level.

C++
#include <iostream>
#include <algorithm>
using namespace std;

string decToBinary(int n) {
  
  	// String to store the binary representation
    string bin = ""; 
	
    while (n > 0) {
      
        // Finding (n % 2) using bitwise AND operator
        // (n & 1) gives the least significant bit (LSB)
        
        int bit = n & 1;
        bin.push_back('0' + bit);
      	
        // Right shift n by 1 (equivalent to n = n / 2)
        // This removes the least significant bit (LSB)
        n = n >> 1;
    }
  	
    reverse(bin.begin(), bin.end());
    return bin;
}

int main() {
    int n = 12;
    cout << decToBinary(n);
    return 0;
}
C
#include <stdio.h>
#include <string.h>

// Function to Reverse the string
void reverse(char *bin, int left, int right) {
	
    while (left < right) {
        char temp = bin[left];
        bin[left] = bin[right];
        bin[right] = temp;
        left++;
        right--;
    }
}

// function to convert decimal to binary
char* decToBinary(int n) {
    int index = 0;
	char* bin = (char*) malloc(32 * sizeof(char));
  
    while (n > 0) {
      
      	// Finding (n % 2) using bitwise AND operator
        // (n & 1) gives the least significant bit (LSB)
        int bit = n & 1;
        bin[index++] = '0' + bit;
      
      	// Right shift n by 1 (equivalent to n = n / 2)
        // This removes the least significant bit (LSB)
        n = n >> 1;
    }
    bin[index] = '\0';
  
	// Reverse the binary string
	reverse(bin, 0, index-1);
  	return bin;
}

int main() {
    int n = 12;
    char* bin = decToBinary(n);
  
    printf("%s", bin);
    return 0;
}
Java
import java.util.*;

class GfG {
    
    static String decToBinary(int n) {
        // String to store the binary representation
        StringBuilder bin = new StringBuilder();

        while (n > 0) {

            // Finding (n % 2) using bitwise AND operator
            // (n & 1) gives the least significant bit (LSB)
            
            int bit = n & 1;
            bin.append(bit);

            // Right shift n by 1 (equivalent to n = n / 2)
            // This removes the least significant bit (LSB)
            
            n = n >> 1;
        }

        return bin.reverse().toString();
    }
    
    public static void main(String[] args) {
        int n = 12;
        System.out.println(decToBinary(n));
    }
}
Python
def decToBinary(n):
  
    # String to store the binary representation
    bin = ""

    while n > 0:
        # Finding (n % 2) using bitwise AND operator
        # (n & 1) gives the least significant bit (LSB)
        bit = n & 1
        bin += str(bit)

        # Right shift n by 1 (equivalent to n = n // 2)
        # This removes the least significant bit (LSB)
        n = n >> 1

    return bin[::-1]

if __name__ == "__main__":
    n = 12
    print(decToBinary(n))
C#
using System;
using System.Text;

class GfG {
    
    // Function to convert decimal to binary
    static string decToBinary(int n) {
      
        // String to store the binary representation
        StringBuilder bin = new StringBuilder();

        while (n > 0) {

            // Finding (n % 2) using bitwise AND operator
            // (n & 1) gives the least significant bit (LSB)
            int bit = n & 1;
            bin.Append(bit);

            // Right shift n by 1 (equivalent to n = n / 2)
            // This removes the least significant bit (LSB)
            n = n >> 1;
        }

        char[] arr = bin.ToString().ToCharArray();
        Array.Reverse(arr);
        return new string(arr);
    }
    
    static void Main() {
        int n = 12;
        Console.WriteLine(decToBinary(n));
    }
}
JavaScript
function decToBinary(n) {
  
    // String to store the binary representation
    let bin = "";

    while (n > 0) {

        // Finding (n % 2) using bitwise AND operator
        // (n & 1) gives the least significant bit (LSB)
        let bit = n & 1;
        bin += bit;

        // Right shift n by 1 (equivalent to n = Math.floor(n / 2))
        // This removes the least significant bit (LSB)
        n = n >> 1;
    }
	
    return bin.split("").reverse().join("");
}

// Driver code
let n = 12;
console.log(decToBinary(n));

Output
1100

[Approach - 4] Using Built-in Methods - O(log₂(n)) Time and O(log₂(n)) Space

The main idea is to leverage built-in functions provided by programming languages to directly convert a decimal number to its binary form. These functions abstract away the underlying logic and return the binary representation as a string, making the process quick, concise, and error-free.

C++
#include <iostream> 
#include <cmath>    
#include <bitset>     
#include <string>     
using namespace std;


string decToBinary(int n) {
    
    int len = (int)(log2(n));
  
	// Store in bitset to get the binary representation, 
  	// then convert it to string
  	// and finally remove the prefix zeroes
  	
    return bitset<64>(n).to_string().substr(64 - len - 1);
}

int main() {
    int n = 12;
    cout << decToBinary(n);
    return 0;
}
Java
class GfG {
  
    static String decToBinary(int n) {
        int len = (int)(Math.log(n) / Math.log(2));
        // Convert to binary string and remove leading zeros
        return String.format("%s", Integer.toBinaryString(n));
    }
    
    public static void main(String[] args) {
        int n = 12;
        System.out.println(decToBinary(n));
    }
}
Python
import math

def decToBinary(n):
	return bin(n)[2::]
  
if __name__ == "__main__":
    n = 12
    print(decToBinary(n))
C#
using System;

class GfG {

    static string decToBinary(int n) {
        // Convert the integer 'n' to its binary representation using base 2
        // Convert.ToString(n, 2) converts the number to a string in binary
        return Convert.ToString(n, 2);
    }
    
    static void Main() {
        int n = 12;
        Console.WriteLine(decToBinary(n));
    }
}
JavaScript
function decToBinary(n) {
    // Use toString(2) to convert the 
    // number to a binary string
    return n.toString(2);
}

// Driver Code
let n = 12;
console.log(decToBinary(n)); 

Output
1100

Similar Reads