Dark Mode
Image

COA_Misc

Convert a number from Base 2 (Binary) to Base 6

The practical implementation of converting a binary number into a base 6 number is discussed in this article:

Problem - The problem is to convert a given binary number into its equivalent number in base 6.

For Example:

Input 1: N = 1101101 = 10910
Output = 301 (3016 = 3 x 62 + 0 x 61 + 1 x 60 = 3 x 36 + 1 = 109)

Input 2: N = 1110111 = 11910

Output = 315 (3156 = 3 x 62 + 1 x 61 + 5 x 60 = 3 x 36 + 1 x 6 + 5 x 1 = 119)

Hello Java Program for Beginners

Idea and approach

The simple idea to get the desired result is to first convert the given binary into its equivalent number in base 10 and then convert it into its equivalent number in base 6.

Let us now understand the working/functions involved in finding the solution:

  • Working of binaryToDecimal() function:

The pseudo-code of the required function is given below:

Binary To Decimal (Int n) // Where n is the binary input

  1. {  
  2. a.  Int dec = 0; // decimal variable to store the result of the function  
  3. b.  Int pv = 1; // Pv is the place value variable  
  4.   
  5. c.  While n is greater than 0  
  6. d.  {  
  7. e.  dec = dec + pv x (n % 10)  
  8. f.  pv = pv x 10  
  9. g.  n = n / 10  
  10. h.  }  
  11.   
  12. i.  decimalToBase6(dec) // Calling the Decimal to Base 6 function to get the output  
  13. }  
  • Working of decimalToBase6() function:

The pseudo-code of the required function is given below:

Decimal To Base6 (Int dec) // Where dec is the decimal input

  1. {  
  2. a.  Int output = 0; // output variable to store the result of the function  
  3. b.  Int pv = 1; // Pv is the place value variable  
  4.   
  5. c.  While dec is greater than 0  
  6. d.  {  
  7. e.  output = output + pv x (n % 6)  
  8. f.  pv = pv x 10  
  9. g.  dec = dev / 6  
  10. h.  }  
  11. i.  Print the output and exit  
  12. }  

Let's take an example to understand further:

Let n = 1101, when we call the binary to decimal function, it will first create some variables and initialize them with some value. Here, dec = 0, and pv = 1 is created. Now, check the while-loop condition. Here, n = 1101, which is greater than zero so, we move to the first iteration.

Iteration 1:

  1. dec = dec + pv * (n % 10) = 0 + 1 * (1) = 0 + 1 = 1  
  2. pv = pv * 2 = 1 * 2 = 2  
  3. n = n /10 = 1101 / 10  

Iteration 2:

  1. dec = dec + pv * (n % 10) = 1 + 2 * (0) = 1 + 0 = 1  
  2. pv = pv * 2 = 2 * 2 = 4  
  3. n = n / 10 = 110 / 10 = 11  

Iteration 3:

  1. dec = dec + pv * (n % 10) = 1 + 4 * (1) = 1 + 4 = 5  
  2. pv = pv * 2 = 4 * 2 = 8  
  3. n = n / 10 = 11 / 10 = 1  

Iteration 4:

  1. dec = dec + pv * (n % 10) = 5 + 8 * (1) = 5 + 8 = 13  
  2. pv = pv * 2 = 8 * 2 = 16  
  3. n = n / 10 = 1 / 10 = 0  

Here, the while-loop will terminate as n is now equal to zero. Now, it will call the decimalToBase6(dec) function and pass the dec = 13 to it.

When the decimaltToBase6 function is called, it creates pv = 1 and output = 0. The dec = 13 is passed to this function and it is greater than zero so the while-loop condition is satisfied. Let's see each iteration one by one:

Iteration 1:

  1. output = output + pv * (dec % 6) = 0 + 1 * (13 % 6) = 0 + 1 * 1 = 1  
  2. pv = pv * 10 = 1 * 10 = 10  
  3. dec = dec / 6 = 13 / 6 = 2  

Iteration 2:

  1. output = output + pv * (dec % 6) = 1 + 10 (2 % 6) = 1 + 10 * 2 = 21  
  2. pv = pv * 10 = 10 * 10 = 100  
  3. dec = dec / 6 = 2 / 6 = 0  

here, dec is now equal to zero. So, in the next iteration, the condition of the while-loop will fail and it will print the output and exit from the program.

Practical Implementation of the above problem

1. Java Implementation:

  1. package javatpoint;  
  2.   
  3. public class BinaryToBase6 {  
  4.   
  5.     // Function To convert the decimal number into its equivalent number in base 6  
  6.     public static void decimalToBase6(int dec) {  
  7.         // Output variable will store the result  
  8.         int output = 0;  
  9.         int pv = 1;  
  10.         // The while loop terminates when the dec number becomes equal to zero  
  11.         while (dec > 0) {  
  12.             output = output + pv * (dec % 6);  
  13.             dec = dec / 6;  
  14.             pv = pv * 10;  
  15.         }  
  16.         System.out.println(output);  
  17.     }  
  18.   
  19.     // Function to convert the binary number into its equivalent decimal number  
  20.     public static void binaryToDecimal(int n) {  
  21.         // The dec variable will store the decimal number  
  22.         int dec = 0;  
  23.         int pv = 1;  
  24.         int temp = n;  
  25.         // The while loop terminates when the temp (Binary number) becomes equal to zero  
  26.         while (temp > 0) {  
  27.             dec = dec + pv * (temp % 10);  
  28.             temp = temp / 10;  
  29.             pv = 2 * pv;  
  30.         }  
  31.         System.out.print("The Base6 equivalent of " + n + " = ");  
  32.         // Calling the function to convert the dec into base6 number  
  33.         decimalToBase6(dec);  
  34.     }  
  35.   
  36.     public static void main(String[] args) {  
  37.         // Calling the function and passing a binary number with each function call  
  38.         binaryToDecimal(1101101);  
  39.         binaryToDecimal(1110111);  
  40.         binaryToDecimal(1010111);  
  41.         binaryToDecimal(1101111);  
  42.     }  
  43.   
  44. }  

Sample Output:

The Base6 equivalent of 1101101 = 301
The Base6 equivalent of 1110111 = 315
The Base6 equivalent of 1010111 = 223
The Base6 equivalent of 1101111 = 303

2. C++ Implementation

  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. // Function To convert a decimal number into its equivalent number in base 6  
  5. void decimalToBase6(int dec)  
  6. {  
  7.     // Output variable will store the result  
  8.     int output = 0;  
  9.     int pv = 1;  
  10.     // The while loop terminates when the dec number becomes equal to zero  
  11.     while (dec > 0)  
  12.     {  
  13.         output = output + pv * (dec % 6);  
  14.         dec = dec / 6;  
  15.         pv = pv * 10;  
  16.     }  
  17.     cout << output << endl;  
  18. }  
  19.   
  20. // Function to convert a binary number into its equivalent decimal number  
  21. void binaryToDecimal(int n)  
  22. {  
  23.     // The dec variable will store the decimal number  
  24.     int dec = 0;  
  25.     int pv = 1;  
  26.     int temp = n;  
  27.     // The while loop terminates when the temp (Binary number) becomes equal to zero  
  28.     while (temp > 0)  
  29.     {  
  30.         dec = dec + pv * (temp % 10);  
  31.         temp = temp / 10;  
  32.         pv = 2 * pv;  
  33.     }  
  34.     cout << "The Base6 equivalent of " << n << " = ";  
  35.     // Calling the function to convert the dec into base6 number  
  36.     decimalToBase6(dec);  
  37. }  
  38.   
  39. int main()  
  40. {  
  41.     // Calling the function and passing a binary number with each function call  
  42.     binaryToDecimal(11011011);  
  43.     binaryToDecimal(10110111);  
  44.     binaryToDecimal(10110111);  
  45.     binaryToDecimal(11011011);  
  46.   
  47.     return 0;  
  48. }  

Sample Output:

The Base6 equivalent of 11011011 = 1003
The Base6 equivalent of 10110111 = 503 
The Base6 equivalent of 10110111 = 503
The Base6 equivalent of 11011011 = 1003

3. C Implementation

  1. #include <stdio.h>  
  2.   
  3. // Function To convert a decimal number into its equivalent number in base 6  
  4. void decimalToBase6(int dec)  
  5. {  
  6.     // Output variable will store the result  
  7.     int output = 0;  
  8.     int pv = 1;  
  9.     // The while loop terminates when the dec number becomes equal to zero  
  10.     while (dec > 0)  
  11.     {  
  12.         output = output + pv * (dec % 6);  
  13.         dec = dec / 6;  
  14.         pv = pv * 10;  
  15.     }  
  16.     printf("%d\n", output);  
  17. }  
  18.   
  19. // Function to convert a binary number into its equivalent decimal number  
  20. void binaryToDecimal(int n)  
  21. {  
  22.     // The dec variable will store the decimal number  
  23.     int dec = 0;  
  24.     int pv = 1;  
  25.     int temp = n;  
  26.     // The while loop terminates when the temp (Binary number) becomes equal to zero  
  27.     while (temp > 0)  
  28.     {  
  29.         dec = dec + pv * (temp % 10);  
  30.         temp = temp / 10;  
  31.         pv = 2 * pv;  
  32.     }  
  33.     printf("The Base6 equivalent of %d = ", n);  
  34.     // Calling the function to convert the dec into base6 number  
  35.     decimalToBase6(dec);  
  36. }  
  37.   
  38. int main()  
  39. {  
  40.     // Calling the function and passing a binary number with each function call  
  41.     binaryToDecimal(101010);  
  42.     binaryToDecimal(111101);  
  43.     binaryToDecimal(101101);  
  44.     binaryToDecimal(111010);  
  45.   
  46.     return 0;  
  47. }  

Sample Output:

The Base6 equivalent of 101010 = 110
The Base6 equivalent of 111101 = 141
The Base6 equivalent of 101101 = 113
The Base6 equivalent of 111010 = 134

4. Python Implementation

  1. # Function To convert a decimal number into its equivalent number in base 6  
  2. def decToBase6(dec):  
  3.     pv = 1  
  4.     output = 0  # Output variable will store the base6 equivalent of the given binary number  
  5.   
  6.     # The while loop terminates when the dec number becomes equal to zero  
  7.     while(dec > 0):  
  8.         output = output + pv*(dec % 6)  
  9.         pv = pv * 10  
  10.         dec = dec // 6  # Integer Division  
  11.   
  12.     print(output)  
  13.   
  14. # Function to convert a binary number into its equivalent decimal number  
  15.   
  16. def binaryToDecimal(n):  
  17.     # dec variable will store the decimal equivalent of the given binary number  
  18.     dec = 0  
  19.     pv = 1  
  20.     temp = n  
  21.   
  22.     # The while loop terminates when the temp (Binary number) becomes equal to zero  
  23.     while(temp > 0):  
  24.         dec = dec + pv*(temp % 10)  
  25.         pv = pv * 2  
  26.         temp = temp//10  # Integer Division  
  27.     print(f"The base6 equivalent of {n} = ", end="")  
  28.     decToBase6(dec)  
  29.   
  30. # Calling the function and passing a binary number with each function call  
  31. binaryToDecimal(1010101)  
  32. binaryToDecimal(1111010)  
  33. binaryToDecimal(1011011)  
  34. binaryToDecimal(1110100)  

Sample Output:

The base6 equivalent of 1010101 = 221
The base6 equivalent of 1111010 = 322
The base6 equivalent of 1011011 = 231
The base6 equivalent of 1110100 = 312

Comment / Reply From