C# Program to Convert Decimal to Binary (Using Bitwise Operator, Array, Function, and Recursion)
Introduction
Decimal to binary conversion is a foundational concept in computer science and programming. Binary numbers are used in low-level programming, networking, embedded systems, and digital electronics.
In this tutorial, we’ll explore multiple ways to write a C# program to convert decimal to binary, using a variety of techniques to suit different learning goals and applications.
Problem Statement
Write a C# program to convert a decimal number to its binary equivalent using different methods such as bitwise operations, arrays, user-defined functions, and recursion.
Use Cases
-
Used in microcontroller programming and digital systems
-
Required in binary arithmetic and logical operations
-
Helpful for learning number systems and data representation
-
Basis for understanding how computers store and interpret data
Method 1: Using Bitwise Operator
// C# Program to Convert Decimal to Binary Using Bitwise Operator
using System;
class W3CW
{
// Main function
static void Main()
{
// Step-1 Declare the input number
int num = 10;
// Step-2 Handle the zero case
if (num == 0)
{
Console.WriteLine("Binary: 0");
return;
}
// Step-3 Build binary string using bitwise shift
string binary = "";
for (int i = 31; i >= 0; i--)
{
int k = num >> i;
// Check each bit
if ((k & 1) == 1)
binary += "1";
else if (binary.Length > 0) // skip leading zeros
binary += "0";
}
// Step-4 Print the binary output
Console.WriteLine("Binary: " + binary);
}
}
Explanation:
-
We loop through each bit from
MSB
toLSB
using>>
(right shift). -
The bit is extracted using bitwise AND (
& 1
). -
Leading zeros are ignored until the first 1 is found.
Output
Binary: 1010
Method 2: Using Array
// C# Program to Convert Decimal to Binary Using Array
using System;
class W3CW
{
static void Main()
{
// Step-1 Declare an array to store binary digits
int[] binaryNum = new int[32];
// Step-2 Input the decimal number
int num = 10;
int index = 0;
// Step-3 Convert to binary using remainder and division
while (num > 0)
{
binaryNum[index] = num % 2;
num = num / 2;
index++;
}
// Step-4 Print binary digits in reverse
Console.Write("Binary: ");
for (int i = index - 1; i >= 0; i--)
{
Console.Write(binaryNum[i]);
}
}
}
Explanation:
-
Remainders of
num % 2
are stored in an array. -
We print the array in reverse for correct binary order.
Output
Binary: 1010
Method 3: Using a Function
// C# Program to Convert Decimal to Binary Using a Function
using System;
class W3CW
{
// Function to convert decimal to binary
static string ConvertToBinary(int num)
{
string result = "";
while (num > 0)
{
result = (num % 2) + result;
num = num / 2;
}
return result == "" ? "0" : result;
}
static void Main()
{
int number = 10;
Console.WriteLine("Binary: " + ConvertToBinary(number));
}
}
Explanation:
-
We define a reusable function
ConvertToBinary()
. -
The result is built by prepending binary digits.
Output
Binary: 1010
Method 4: Using Recursion
// C# Program to Convert Decimal to Binary Using Recursion
using System;
class W3CW
{
// Recursive function
static void ConvertToBinary(int num)
{
if (num == 0)
return;
ConvertToBinary(num / 2);
Console.Write(num % 2);
}
static void Main()
{
int number = 10;
Console.Write("Binary: ");
if (number == 0)
Console.Write("0");
else
ConvertToBinary(number);
Console.WriteLine();
}
}
Explanation:
-
Recursive calls divide the number until the base case is met.
-
Digits are printed in ascending order during stack unwind.
Output
Binary: 1010
Output of the Above Programs
All programs will generate this output for input 10
:
Binary: 1010
Summary Table
Method | Uses | Reusability | Suitable For |
---|---|---|---|
Bitwise Operator | Bit manipulation | Low | Low-level concepts |
Array | Manual storage and iteration | Medium | Beginners |
Function | Modular code | High | Code reusability |
Recursion | Elegant logic, stack use | Medium | Algorithm learners |