# Balanced Ternary Number System

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 which 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 ternary number system.
2. Convert ternary to balanced ternary system, using 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 of negative sign before the number. All negative numbers in balanced ternary system starts 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 ` `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`

Output:

```Equivalent Balanced Ternary of 238 is: 100Z11

```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Tech Enthusiast and Logical Thinker, loves to code and to learn new technology

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : SHIVAMSINGH67, Rajput-Ji