“Trits” 代替 “bits” – 平衡三进制简短介绍
“Trits” 代替 “bits” – 平衡三进制简短介绍
通常认为,想要学习计算机科学的学生应该熟悉数字的二进制表示,并因此习惯于常见的2的幂,即 2¹=2, 2²=4, 2³=8, 等等。 确实如此;我们所生活的数字世界使用比特位,并且几乎所有编程语言都基于 布尔代数。 但是,仅仅因为某事物很流行并不意味着它就是好的。 在这篇简短的文章中,我的目的是让读者对 平衡三进制 的概念有一个总体的理解,使用它的好处,以及创造三进制计算机的早期尝试的历史。
引言
平衡三进制 这个概念有很多基础性的想法,所以让我们试着把它分解成我们可以理解的东西。 这里的 三进制 指的是 三进制数制。 数制 是不同的人表达数字的一种方式:伟大的希腊人使用字母上的上标来识别数字,即 α’, β’, γ’。 在罗马帝国,他们使用 I, II, III, IV (我们仍然在名字中使用这些数字,比如 Charles XII)。 如今许多人使用像 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 这样的数字 (源于印度-阿拉伯数字)。 这种书写数字的方式可以被称为 10进制 或简单地说 十进制。 三进制数基与十进制相似,但只允许 0, 1, 2。 在二进制 (基数为 2) 中,我们只允许 0, 1。
十进制(基数 10) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
三进制(基数 3) | 0 | 1 | 2 | 10 | 11 | 12 | 20 | 21 | 22 | 100 | 101 |
从这张表中可以清楚地看到,一旦数字用尽(例如从 9 到 10),我们就会放一个零并进位 1 (在数字中)。 这与基数 3 类似,但是,由于我们只有 0, 1, 2,我们的数字结束得比基数 10 快。
存在一种在不同基数之间转换的算法,但那可能更适合另一篇文章。 因此,这里将不讨论 (转换数字)。 然而,通过一个有趣的观察,从基数 3 转换到基数 10 相当简单。 例如,123 等同于说 123= 1*10²+2*10¹+3*10° = 1*100+2*10+3。 在基数 3 中,我们有一个类似的方法,但不是使用 10,而是使用 3。 假设我们想要将 22 (在基数 3 中)转换为基数 10。 因此,2*3¹+2*3°=2*3+2=8 (在基数 10 中)。 这个结论与表中的结论是一致的。
现在,我们应该对 三进制数制 有一些了解了。 让我们继续讨论 平衡 这个术语。 一种直观的思考方式是,某些东西应该是平衡的,就像重量两侧的质量应该抵消一样。 那么,这样的系统会是什么样子呢? 事实证明,我们没有说可以使用数字 0, 1, 2,而是引入 -1,以便平衡三进制系统中的数字是 -1,0, 1(看起来是平衡的?)。 让我们将 -1 称为 n,将 1 称为 p。 下表将基数 10 中的数字与平衡三进制中的数字关联起来。
十进制(基数 10) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
平衡三进制(基数 3) | 0 | p | pn | p0 | pp | pnn | pn0 | pnp | p0n | p00 | p0p |
这里有一个与非平衡三进制类似的模式。感兴趣的读者应该考虑通过在喜欢的编程语言中实现它来尝试这个概念 (查看所有实现)。
优点
以下是平衡三进制的一些优点
- 符号 (+/-) 存储在数字中,并且可以通过前导三进制位(类似于比特位)推断出来。 因此,如果一个数字以 -1 或使用我们的符号 n 开头,我们知道它是负数。
- 为了获得具有相反符号的数字,只需将所有 n 替换为 p,并将所有 p 替换为 n。 例如。 由于 7 是 pnp,-7 是 npn。
- 为了四舍五入到最接近的整数,应该删除小数部分。
- 事情不必是 真 或 假。 还存在一个 未知 的情况。
历史
这似乎这个想法只在理论上有效,而不是在真实的计算机中。 然而,事实并非如此。 在莫斯科国立大学,开发了一系列 Setun 计算机。 第一台 Setun 建于 1958 年。 可以注意到一个有趣的事情是,它使用了三进制逻辑。
延伸阅读
对于那些感兴趣的人,请看下面的链接
- http://www.computer-museum.ru/english/setun.htm
- http://en.wikipedia.org/wiki/Heyting_algebra
- http://tunguska.sourceforge.net/The_Fine_Manual.pdf
编辑
- 24.12.2014 - 更正描述 (格式)
- 23.12.2014 - 更正了基数10-基数3的表
- 20.12.2014 - 首次发布