问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

【算法基础】平衡三进制(Balanced Ternary)

创作时间:
作者:
@小白创作中心

【算法基础】平衡三进制(Balanced Ternary)

引用
CSDN
1.
https://blog.csdn.net/qq_44743100/article/details/138465526

平衡三进制(Balanced Ternary)是一种独特的数字符号系统,它使用-1、0和1作为每一位的数字,通过这种特殊的表示方式,可以实现不使用负号的符号表示。本文将详细介绍平衡三进制的概念、特点以及如何将其应用于实际的数值转换中。

平衡三进制(Balanced Ternary)

介绍

这是一个不太标准的数字符号系统(numeral system)。它的特点是每一位数字可以是-1、0和1。它是一个基于三进制的数字符号系统。因为使用-1来作为一个数字不太方便,我们接下来会使用字母Z来代替-1。图片里展示的是一台使用这种系统的计算机。

下面是一些使用这种平衡三进制来表示的数字:

    0    0
    1    1
    2    1Z
    3    10
    4    11
    5    1ZZ
    6    1Z0
    7    1Z1
    8    10Z
    9    100

这种符号系统允许你在书写符号的时候不使用前置的负号:在将正数转换成负数时,你需要将每一位数字转置(1变成Z,Z变成1)。

    -1   Z
    -2   Z1
    -3   Z0
    -4   ZZ
    -5   Z11

注意到,负数都是Z开头,正数都是1开头。

转换算法

通过将一个给定的数转换成普通的三进制形式,我们很容易将它表示成平衡三进制的形式。当一个数以三进制的形式表示时,它的每一位都是0、1、2中的一个数。要将它转换成平衡三进制,我们从低位开始,如果遇到了0或1,那么这一位保持不变,如果遇到数字2,那么将1变成Z,并且让下一位加1。如果加1后变成了数字3,3应该变成0,并且下一位要加1。

例1:将64转换成平衡三进制。首先我们先将64写成普通的三进制数形式:

6410 = 021013

我们从最右边一位开始处理:

  • 1,0,1被跳过,保持不变。
  • 2被转换成Z并且左边以为加1,我们得到了1Z101。

最终的结果是1Z101。

我们通过把每一位的权重加起来把它转换成普通的10进制数字:

1Z101 = 81⋅1 + 27⋅(−1) + 9⋅1 + 3⋅0 + 1⋅1 = 6410

例2:将237平衡三进制。首先我们先将237写成普通的三进制数形式:

23710 = 222103

我们从最右边一位开始处理:

  • 0,1被跳过,保持不变。
  • 2被转换成Z,左边一位加1,我们得到了23Z10。
  • 3被转换成0,左边一位加1,我们得到了30Z10。
  • 3被转换成0,左边以为加1,我们得到了100Z10。

最终的结果是100Z10。

我们将它转换成普通的10进制数字:

10Z10 = 243⋅1 + 81⋅0 + 27⋅0 + 9⋅(−1) + 3⋅1 + 1⋅0 = 27310

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号