Ternary Systems

6/6/2005 2:16:19 AM

Ternary Systems

I have always been fascinated with alternative computer representations of data such as numbers. When we standardize on a particular representation of any type of data, it may make us more efficient, but I also think that we lose something in process. This is why we have a decimal type in an addition to floating-point types, because the accuracy of type for representing base-ten number in many situations outweigh its slow performance.

In the course of my development working with natural language, I found myself frequently encountering numerous situations requiring tristates. I have also read at some point the brain appears to operate using a ternary system in contrast to present day computers, which operate using a binary system. Ternary values consist of the values 1,0,-1 which correspond respectively to the quasi-boolean values—true, unknown, false. Unlike binary values, ternary values can cancel each other out or represent ambiguous values. However, ternary values can yet be represented as an even more general value in fuzzy logic with states corresponding to the inclusive range of real numbers between 0 and 1.

In .NET, I guess that some of the role of the third ternary values are handled by constructs such as Nullable<>, DBNullValue, and CheckState. None of these though support arithmetic and logical operations.

I found a wikipedia article that discusses a field of “ternary” logic. I uncovered a fascinating article about a ternary computer called “Setun” developed in the late 1950s. It mentions some advantages of ternary values including simplicity and symmetry.