Skip to content Skip to sidebar Skip to footer

Write a C Program to Print the Decimal Value of a Binary String Passed as a Parameter.

Given a decimal number as input, we need to write a program to convert the given decimal number into equivalent binary number.

Examples:

          Input : 7 Output : 111  Input : 10 Output : 1010  Input: 33 Output: 100001

Algorithm:

  1. Store the remainder when the number is divided by 2 in an array.
  2. Divide the number by 2
  3. Repeat the above two steps until the number is greater than zero.
  4. Print the array in reverse order now.

For Example:
If the decimal number is 10.
Step 1: Remainder when 10 is divided by 2 is zero. Therefore, arr[0] = 0.
Step 2: Divide 10 by 2. New number is 10/2 = 5.
Step 3: Remainder when 5 is divided by 2 is 1. Therefore, arr[1] = 1.
Step 4: Divide 5 by 2. New number is 5/2 = 2.
Step 5: Remainder when 2 is divided by 2 is zero. Therefore, arr[2] = 0.
Step 6: Divide 2 by 2. New number is 2/2 = 1.
Step 7: Remainder when 1 is divided by 2 is 1. Therefore, arr[3] = 1.
Step 8: Divide 1 by 2. New number is 1/2 = 0.
Step 9: Since number becomes = 0. Print the array in reverse order. Therefore the equivalent binary number is 1010.


Below diagram shows an example of converting the decimal number 17 to equivalent binary number.

Below is the implementation of above idea.

C++

#include <iostream>

using namespace std;

void decToBinary( int n)

{

int binaryNum[32];

int i = 0;

while (n > 0) {

binaryNum[i] = n % 2;

n = n / 2;

i++;

}

for ( int j = i - 1; j >= 0; j--)

cout << binaryNum[j];

}

int main()

{

int n = 17;

decToBinary(n);

return 0;

}

Java

import java.io.*;

class GFG {

static void decToBinary( int n)

{

int [] binaryNum = new int [ 32 ];

int i = 0 ;

while (n > 0 ) {

binaryNum[i] = n % 2 ;

n = n / 2 ;

i++;

}

for ( int j = i - 1 ; j >= 0 ; j--)

System.out.print(binaryNum[j]);

}

public static void main(String[] args)

{

int n = 17 ;

decToBinary(n);

}

}

Python3

def decToBinary(n):

binaryNum = [ 0 ] * n;

i = 0 ;

while (n > 0 ):

binaryNum[i] = n % 2 ;

n = int (n / 2 );

i + = 1 ;

for j in range (i - 1 , - 1 , - 1 ):

print (binaryNum[j], end = "");

n = 17 ;

decToBinary(n);

C#

using System;

public class GFG {

static void decToBinary( int n)

{

int [] binaryNum = new int [32];

int i = 0;

while (n > 0) {

binaryNum[i] = n % 2;

n = n / 2;

i++;

}

for ( int j = i - 1; j >= 0; j--)

Console.Write(binaryNum[j]);

}

public static void Main()

{

int n = 17;

decToBinary(n);

}

}

PHP

<?php

function decToBinary( $n )

{

$binaryNum ;

$i = 0;

while ( $n > 0)

{

$binaryNum [ $i ] = $n % 2;

$n = (int)( $n / 2);

$i ++;

}

for ( $j = $i - 1; $j >= 0; $j --)

echo $binaryNum [ $j ];

}

$n = 17;

decToBinary( $n );

?>

Javascript

<script>

function decToBinary(n)

{

let binaryNum = new Array(32);

let i = 0;

while (n > 0) {

binaryNum[i] = n % 2;

n = Math.floor(n / 2);

i++;

}

for (let j = i - 1; j >= 0; j--)

document.write(binaryNum[j]);

}

let n = 17;

decToBinary(n);

</script>

Output :

10001

We can use bitwise operators to do above job. Note that bitwise operators work faster than arithmetic operators used above.

C++

#include <iostream>

using namespace std;

int decToBinary( int n)

{

for ( int i = 31; i >= 0; i--) {

int k = n >> i;

if (k & 1)

cout << "1" ;

else

cout << "0" ;

}

}

int main()

{

int n = 32;

decToBinary(n);

}

Java

class gfg {

public void decToBinary( int n)

{

for ( int i = 31 ; i >= 0 ; i--) {

int k = n >> i;

if ((k & 1 ) > 0 )

System.out.print( "1" );

else

System.out.print( "0" );

}

}

}

class geek {

public static void main(String[] args)

{

gfg g = new gfg();

int n = 32 ;

g.decToBinary(n);

}

}

Python3

def decToBinary(n):

for i in range ( 31 , - 1 , - 1 ):

k = n >> i;

if (k & 1 ):

print ( "1" , end = "");

else :

print ( "0" , end = "");

n = 32 ;

decToBinary(n);

C#

using System;

class gfg {

public void decToBinary( int n)

{

for ( int i = 31; i >= 0; i--) {

int k = n >> i;

if ((k & 1) > 0)

Console.Write( "1" );

else

Console.Write( "0" );

}

}

}

class geek {

public static int Main()

{

gfg g = new gfg();

int n = 32;

g.decToBinary(n);

return 0;

}

}

PHP

<?php

function decToBinary( $n )

{

for ( $i = 31; $i >= 0; $i --)

{

$k = $n >> $i ;

if ( $k & 1)

echo "1" ;

else

echo "0" ;

}

}

$n = 32;

decToBinary( $n );

?>

Javascript

<script>

function decToBinary(n)

{

for (i = 31; i >= 0; i--) {

var k = n >> i;

if ((k & 1) > 0)

document.write( "1" );

else

document.write( "0" );

}

}

var n = 32;

decToBinary(n);

</script>

Output :

00000000000000000000000000100000

Thanks to ajay0007 for suggesting above solution.

Decimal to binary conversion can also be done without using arrays.

C++

#include <cmath>

#include <iostream>

using namespace std;

#define ull unsigned long long int

int decimalToBinary( int N)

{

ull B_Number = 0;

int cnt = 0;

while (N != 0) {

int rem = N % 2;

ull c = pow (10, cnt);

B_Number += rem * c;

N /= 2;

cnt++;

}

return B_Number;

}

int main()

{

int N = 17;

cout << decimalToBinary(N);

return 0;

}

Java

import java.io.*;

class GFG

{

static int decimalToBinary( int N)

{

int B_Number = 0 ;

int cnt = 0 ;

while (N != 0 )

{

int rem = N % 2 ;

double c = Math.pow( 10 , cnt);

B_Number += rem * c;

N /= 2 ;

cnt++;

}

return B_Number;

}

public static void main (String[] args)

{

int N = 17 ;

System.out.println (decimalToBinary(N));

}

}

Python3

def decimalToBinary(N):

B_Number = 0

cnt = 0

while (N ! = 0 ):

rem = N % 2

c = pow ( 10 , cnt)

B_Number + = rem * c

N / / = 2

cnt + = 1

return B_Number

N = 17

print (decimalToBinary(N))

C#

using System;

class GFG

{

static int decimalToBinary( int N)

{

int B_Number = 0;

int cnt = 0;

while (N != 0)

{

int rem = N % 2;

int c = ( int )Math.Pow(10, cnt);

B_Number += rem * c;

N /= 2;

cnt++;

}

return B_Number;

}

static public void Main ()

{

int N = 17;

Console.Write(decimalToBinary(N));

}

}

Javascript

<script>

function decimalToBinary(N)

{

var B_Number = 0;

var cnt = 0;

while (N != 0)

{

var rem = N % 2;

var c = Math.pow(10, cnt);

B_Number += rem * c;

N = parseInt(N/2);

cnt++;

}

return B_Number;

}

var N = 17;

document.write(decimalToBinary(N));

</script>

Output :

10001

Note that this method is similar to the one where we convert Binary to Decimal as discussed in this post.
There is yet another method that converts any Decimal Number to its Binary form. The idea is to use bitset.

Below is the implementation of the above approach.

C++

#include <bits/stdc++.h>

using namespace std;

string decimalToBinary( int n)

{

string s = bitset<64> (n).to_string();

const auto loc1 = s.find( '1' );

if (loc1 != string::npos)

return s.substr(loc1);

return "0" ;

}

int main()

{

int n = 17;

cout << decimalToBinary(n);

return 0;

}

Output :

10001

This article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.


Write a C Program to Print the Decimal Value of a Binary String Passed as a Parameter.

Source: https://www.geeksforgeeks.org/program-decimal-binary-conversion/

Enregistrer un commentaire for "Write a C Program to Print the Decimal Value of a Binary String Passed as a Parameter."