Balanced Ternary Number System - GeeksforGeeks

26 Apr, 2021
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:  
Convert decimal to the ternary number system.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 iswhen 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.
Convert decimal to the ternary number system.
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 iswhen 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.
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++
Java
Python3
C#
Javascript
// 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 codeint main(){     int n = 238;     cout << "Equivalent Balanced Ternary of "         << n << " is: "         << balancedTernary(n);     return 0;}
// Java program to convert positive// decimals into balanced ternary systemclass 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 codepublic 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 program to convert positive# decimals into balanced ternary systemdef 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 Coden = 238 # Function callprint("Equivalent Balanced Ternary of",       n , "is:", balancedTernary(n)) # This code is contributed by Shivam Singh
// C# program to convert positive// decimals into balanced ternary systemusing 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 codepublic 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
<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 codevar n = 238;document.write( "Equivalent Balanced Ternary of "     + n + " is: "     + balancedTernary(n));  </script>
  
Equivalent Balanced Ternary of 238 is: 100Z11
 
 
SHIVAMSINGH67
Rajput-Ji
rrrtnx
number-theory
Mathematical
number-theory
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Algorithm to solve Rubik's Cube
Program to print prime numbers from 1 to N.
Program to multiply two matrices
Fizz Buzz Implementation
Complexity Analysis of Binary Search
Check if a number is Palindrome
Modular multiplicative inverse
Find Union and Intersection of two unsorted arrays
Count ways to reach the n'th stair
Find first and last digits of a number