A positive integer is entered through the keyboard, write a function to find the Binary equivalent of this number:
(1) Without using recursion.
(2) Using recursion.
Page Contents
We need to convert the user input Decimal number to its equivalent Binary number using iterative logic as well as recursive logic.
In this video tutorial, we’ll write 2 functions. One for iterative logic and another for recursive logic.
Enter a Decimal number
14
Iterative Logic
Binary Equivalent of 14 is 1110.
Recursive Logic
Binary Equivalent of 14 is 11110.
Note: Binary number system can be derived by base 2 to the power of whole numbers.
If user enters num = 14
We keep on dividing and modulo dividing the number by 2.
14 / 2 = 7, reminder 0.
07 / 2 = 3, reminder 1.
03 / 2 = 1, reminder 1.
01 / 2 = 0
So Binary equivalent of 14 is 1110.
#include<stdio.h> int binary_rec(int); int binary(int); int main() { int num; printf("Enter a Decimal number\n"); scanf("%d", &num); printf("Binary Equivalent (Iterative) of %d is %d\n", num, binary(num)); printf("Binary Equivalent (Recursive) of %d is %d\n", num, binary_rec(num)); return 0; } int binary_rec(int num) { if(num == 0) return 0; else return((num % 2) + 10 * binary_rec(num/2)); } int binary(int num) { int rem, bin = 0, place = 1; while(num) { rem = num % 2; num = num / 2; bin = bin + (rem * place); place = place * 10; } return(bin); }
Output 1:
Enter a Decimal number
14
Iterative Logic
Binary Equivalent of 14 is 1110
Recursive Logic
Binary Equivalent of 14 is 1110
Output 2:
Enter a Decimal number
41
Iterative Logic
Binary Equivalent of 41 is 101001
Recursive Logic
Binary Equivalent of 41 is 101001
For iterative logic, please check the video tutorial C Program To Convert Decimal Number To Binary Number, using While Loop.
Recursive Function Logic
Assume that user inputs num value as 14.
num | num % 2 | (num % 2) + 10 * binary_rec(num/2) |
---|---|---|
14 | 14 % 2 | (0) + 10 * binary_rec(7) |
7 | 7 % 2 | (1) + 10 * binary_rec(3) |
3 | 3 % 2 | (1) + 10 * binary_rec(1) |
1 | 1 % 2 | (1) + 10 * binary_rec(0) |
Value Returning – Control Shifting back.
Return Value | To | Result |
---|---|---|
return 0; | (1) + 10 * binary_rec(0) | (1) + 10 * 0 = 1 |
1 | (1) + 10 * binary_rec(1) | (1) + 10 * 1 = 11 |
11 | (1) + 10 * binary_rec(3) | (1) + 10 * 11 = 111 |
111 | (0) + 10 * binary_rec(7) | (0) + 10 * 111 = 1110 |
Binary Equivalent of Decimal Number 14 is 1110.
#include<stdio.h> int binary_rec(int); int binary(int); int main() { int num; printf("Enter a Decimal number\n"); scanf("%d", &num); printf("\nIterative Logic\n"); printf("Binary Equivalent of %d is %d\n\n", num, binary(num)); printf("\nRecursive Logic\n"); printf("Binary Equivalent of %d is %d\n\n", num, binary_rec(num)); return 0; } int binary_rec(int num) { return( (num == 0) ? 0 : (num % 2) + 10 * binary_rec(num / 2)); } int binary(int num) { int rem, bin = 0, place = 1; while(num != 0) { rem = num % 2; num = num / 2; bin = bin + (rem * place); place = place * 10; } return(bin); }
Output 1:
Enter a Decimal number
14
Iterative Logic
Binary Equivalent of 14 is 1110
Recursive Logic
Binary Equivalent of 14 is 1110
Output 2:
Enter a Decimal number
41
Iterative Logic
Binary Equivalent of 41 is 101001
Recursive Logic
Binary Equivalent of 41 is 101001
To know more about Ternary or Conditional Operator visit:
Ternary Operator / Conditional Operator In C
Another Method
#include<stdio.h> void binary_rec(int); int binary(int); int main() { int num; printf("Enter a Decimal number\n"); scanf("%d", &num); printf("\nIterative Logic\n"); printf("Binary Equivalent of %d is %d\n\n", num, binary(num)); printf("\nRecursive Logic\n"); printf("Binary Equivalent of %d is ", num); binary_rec(num); printf("\n"); return 0; } void binary_rec(int num) { if(num == 1) printf("1"); else { binary_rec(num/2); printf("%d", num%2); } } int binary(int num) { int rem, bin = 0, place = 1; while(num != 0) { rem = num % 2; num = num / 2; bin = bin + (rem * place); place = place * 10; } return(bin); }
Output:
Enter a Decimal number
14
Iterative Logic
Binary Equivalent of 14 is 1110
Recursive Logic
Binary Equivalent of 14 is 1110
Here we simply divide the number by 2 and keep passing it as new value of num to binary_rec() function, and we print num%2 once num = 1 and it returns the value 1.
1. Binary Number System uses base 2 and digits 01.
2. Octal Number System uses base 8 and digits 01234567.
3. Decimal Number System uses base 10 and digits 0123456789.
4. Hexadecimal Number System uses base 16 and digits 0123456789ABCDEF.
For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List
For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert