 GeeksforGeeks App
Open App Browser
Continue

## Related Articles

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 digits -1, 0, and 1. Since it is inconvenient to write -1 as a digit, we’ll use the 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 right to left, 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 ` `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

 ``

Output:

`Equivalent Balanced Ternary of 238 is: 100Z11`

Time Complexity: O(log3n)

Auxiliary Space: O(log3n)

My Personal Notes arrow_drop_up