Program for Decimal to Binary Conversion (original) (raw)
Last Updated : 21 Jun, 2025
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
Table of Content
- [Approach - 1] Division by 2 - O(log₂(n)) Time and O(log₂(n)) Space
- [Approach - 2] Using Head Recursion - O(log₂(n)) Time and O(log₂(n)) Space
- [Approach - 3] Using Bitwise Operators - O(log₂(n)) Time and O(log₂(n)) Space
- [Approach - 4] Using Built-in Methods - O(log₂(n)) Time and O(log₂(n)) Space
[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 #include 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));
`
[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 #include 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));
`
[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 #include 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));
`
[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
#include
#include
#include
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));
`