Skip to content
Related Articles

Related Articles

Improve Article

Balanced Ternary Number System

  • Last Updated : 26 Apr, 2021
Geek Week

As we already know, a Binary number system is a number system that has only 2 digits in it, i.e. 0 and 1. Similarly, we also know that a Ternary number system is a number system that has only 3 digits in it, i.e. 0, 1 and 2. In this article, we will learn about Balanced Ternary Number System.
A balanced ternary number system is a numeral system that comprises of digits -1, 0 and 1. Since it is inconvenient to write -1 as a digit, we’ll use letter Z further for this purpose.
Conversion of Decimal to Balanced Ternary system 
The conversion from Decimal to balanced ternary is done in two steps: 
 

  1. Convert decimal to the ternary number system.
  2. Convert ternary to the balanced ternary system, using the below steps: 
    • traverse the ternary number, right to left by leaving 0 and 1 as it is
    • when encounter 2, change it to Z and add +1 to the next digit in iteration.
    • Some digits may become +3, then replace +3 with 0 and add +1 to next digit in iteration.
    • complete this process until you convert all the digits.

Example: convert 23810 to balanced ternary and vice-versa
 

First convert 23810 to ternary number system
23810 = 222113 
Second convert ternary to balanced ternary number system : 
 

  • By starting iteration from left to right, two 1’s are skipped as it remains same in balanced ternary.
  • Now convert first encountered 2 with z increasing it’s next digit in iteration by +1. So we get 23Z11.
  • Convert 3 to 0 with increment +1 in it’s next digit in iteration. So we get 30Z11.
  • Convert 3 to 0 with increment +1 in it’s next digit in iteration. So we get 100Z11. (Here assume 0 is present before most significant digit)

The final result is 100Z11.

Note:- 
The system also allows representation of negative numbers eliminating the need for a negative sign before the number. All negative numbers in a balanced ternary system start with Z. 
i.e.: 
−110 = Z3
−210 = Z13
−310 = Z03
−410 = ZZ3
−510 = Z113 .
 



Below is the program to convert positive decimals into the balanced ternary system:
 

C++




// C++ program to convert positive
// decimals into balanced ternary system
 
#include <bits/stdc++.h>
using namespace std;
 
string balancedTernary(int n)
{
    string output = "";
    while (n > 0) {
        int rem = n % 3;
        n = n / 3;
        if (rem == 2) {
            rem = -1;
            n++;
        }
        output = (rem == 0
                      ? '0'
                      : (rem == 1)
                            ? '1'
                            : 'Z')
                 + output;
    }
    return output;
}
 
// Driver code
int main()
{
 
    int n = 238;
 
    cout << "Equivalent Balanced Ternary of "
         << n << " is: "
         << balancedTernary(n);
 
    return 0;
}

Java




// Java program to convert positive
// decimals into balanced ternary system
class GFG{
 
static String balancedTernary(int n)
{
    String output = "";
    while (n > 0)
    {
        int rem = n % 3;
        n = n / 3;
        if (rem == 2)
        {
            rem = -1;
            n++;
        }
        output = (rem == 0 ? '0' :
                 (rem == 1) ? '1' : 'Z') + output;
    }
    return output;
}
 
// Driver code
public static void main(String[] args)
{
    int n = 238;
 
    System.out.print("Equivalent Balanced Ternary of " +
                      n + " is: " + balancedTernary(n));
}
}
 
// This code is contributed by Rajput-Ji

Python3




# Python3 program to convert positive
# decimals into balanced ternary system
def balancedTernary(n):
 
    output = ""
     
    while(n > 0):
        rem = n % 3
        n = n // 3
         
        if(rem == 2):
            rem = -1
            n += 1
 
        if(rem == 0):
            output = '0' + output
        else:
            if(rem == 1):
                output = '1' + output
            else:
                output = 'Z' + output
 
    return output
 
# Driver Code
n = 238
 
# Function call
print("Equivalent Balanced Ternary of",
       n , "is:", balancedTernary(n))
 
# This code is contributed by Shivam Singh

C#




// C# program to convert positive
// decimals into balanced ternary system
using System;
using System.Collections.Generic;
class GFG{
 
static String balancedTernary(int n)
{
    String output = "";
    while (n > 0)
    {
        int rem = n % 3;
        n = n / 3;
        if (rem == 2)
        {
            rem = -1;
            n++;
        }
        output = (rem == 0 ? '0' :
                 (rem == 1) ? '1' : 'Z') + output;
    }
    return output;
}
 
// Driver code
public static void Main(String[] args)
{
    int n = 238;
 
    Console.Write("Equivalent Balanced Ternary of " +
                   n + " is: " + balancedTernary(n));
}
}
 
// This code is contributed by Rajput-Ji

Javascript




<script>
 
// Javascript program to convert positive
// decimals into balanced ternary system
 
function balancedTernary(n)
{
    var output = "";
    while (n > 0) {
        var rem = n % 3;
        n = parseInt(n / 3);
        if (rem == 2) {
            rem = -1;
            n++;
        }
        output = (rem == 0
                      ? '0'
                      : (rem == 1)
                            ? '1'
                            : 'Z')
                 + output;
    }
    return output;
}
 
// Driver code
var n = 238;
document.write( "Equivalent Balanced Ternary of "
     + n + " is: "
     + balancedTernary(n));
 
 
</script>

 
 

Output: 
Equivalent Balanced Ternary of 238 is: 100Z11

 

 

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :