跳转至

# 平衡三进制

## 定义

平衡三进制，也称为对称三进制．这是一个广义进位系统．

正规的三进制的数字都是由 `0`,`1`,`2` 构成的，而平衡三进制的数字是由 `-1`,`0`,`1` 构成的．它的基数也是 `3`（因为有三个可能的值）．由于将 `-1` 写成数字不方便，我们将使用字母 `Z` 来代替 `-1`．

## 解释

这里有几个例子：

十进制 | 平衡三进制 | 十进制 | 平衡三进制
--- | --- | --- | ---
`0` | `0` | `5` | `1ZZ`
`1` | `1` | `6` | `1Z0`
`2` | `1Z` | `7` | `1Z1`
`3` | `10` | `8` | `10Z`
`4` | `11` | `9` | `100`

该数字系统的负数表示起来很容易：只需要将正数的数字倒转即可（`Z` 变成 `1`,`1` 变成 `Z`）．

十进制 | 平衡三进制
--- | ---
`-1` | `Z`
`-2` | `Z1`
`-3` | `Z0`
`-4` | `ZZ`
`-5` | `Z11`

很容易就可以看到，负数最高位是 `Z`，正数最高位是 `1`．

## 过程

在平衡三进制的转转换法中，需要先写出一个给定的数 `x` 在标准三进制中的表示．当 `x` 是用标准三进制表示时，其数字的每一位都是 `0`、`1` 或 `2`．从最低的数字开始迭代，我们可以先跳过任何的 `0` 和 `1`，但是如果遇到 `2` 就应该先将其变成 `Z`，下一位数字再加上 `1`．而遇到数字 `3` 则应该转换为 `0` 下一位数字再加上 `1`．

### 应用一

把 `64` 转换成平衡三进制．

首先，我们用标准三进制数来重写这个数：

6 4 1 0=0 2 1 0 1 3 6 4 10=02101 3

让我们从对整个数影响最小的数字（最低位）进行处理：

- `101` 被跳过（因为在平衡三进制中允许 `0` 和 `1`）；
- `2` 变成了 `Z`，它左边的数字加 `1`，得到 `1Z101`；
- `1` 被跳过，得到 `1Z101`．

最终的结果是 `1Z101`．

我们再把它转换回十进制：

𝟷 𝚉 𝟷 𝟶 𝟷=8 1×1+2 7×(−1)+9×1+3×0+1×1=6 4 1 0 1Z101=81×1+27×(−1)+9×1+3×0+1×1=64 10

### 应用二

把 `237` 转换成平衡三进制．

首先，我们用标准三进制数来重写这个数：

2 3 7 1 0=2 2 2 1 0 3 2 37 10=22210 3

- `0` 和 `1` 被跳过（因为在平衡三进制中允许 `0` 和 `1`）；
- `2` 变成 `Z`，左边的数字加 `1`，得到 `23Z10`；
- `3` 变成 `0`，左边的数字加 `1`，得到 `30Z10`；
- `3` 变成 `0`，左边的数字（默认是 `0`）加 `1`，得到 `100Z10`；
- `1` 被跳过，得到 `100Z10`．

最终的结果是 `100Z10`．

我们再把它转换回十进制：

𝟷 𝟶 𝟶 𝚉 𝟷 𝟶=2 4 3⋅1+8 1⋅0+2 7⋅0+9⋅(−1)+3⋅1+1⋅0=2 3 7 1 0 100Z10=243⋅1+81⋅0+27⋅0+9⋅(−1)+3⋅1+1⋅0=237 10

## 性质

对于一个平衡三进制数 𝑋 3 X 3 来说，其可以按照每一位 𝑥 𝑖 x i 乘上对应的权值 3 𝑖 3 i 来唯一得到一个十进制数 𝑌 1 0 Y 10．

那对于一个十进制数 𝑌 1 0 Y 10，是否 唯一对应一个平衡三进制数 呢？

答案是肯定的，这种性质被叫做平衡三进制的唯一性．

证明

我们利用 反证法 来求证：

假设一个十进制数 𝑌 1 0 Y 10，存在两个 不同的平衡三进制数 𝐴 3,𝐵 3 A 3,B 3 转化成十进制时等于 𝑌 1 0 Y 10，即证 𝐴 3 =𝐵 3 A 3=B 3．分情况讨论：

1. 当 𝑌 1 0 =0 Y 10=0，显然 𝐴 3 =𝐵 3 =0 3 A 3=B 3=0 3，与假设矛盾．

2. 当 𝑌 1 0 >0 Y 10>0：

   - 将 𝐴 3 A 3，𝐵 3 B 3 的数位按低位到高位编号，记 𝑎 𝑖 a i 为 𝐴 3 A 3 的第 𝑖 i 位，𝑏 𝑖 b i 为 𝐵 B 的第 𝑖 i 位．在 𝐴 3,𝐵 3 A 3,B 3 中，必存在 𝑖 i 使得 𝑎 𝑖 ≠𝑏 𝑖 a i≠b i．可以发现第 𝑖 −1,𝑖 −2,…,0 i−1,i−2,…,0 位均与证明无关．因此，将 𝐴 3,𝐵 3 A 3,B 3 按位右移 𝑖 i 位，得到 𝐴′3,𝐵′3 A 3′,B 3′，原问题等价于证明 𝐴′3 =𝐵′3 A 3′=B 3′．
   - 对于 𝐴′3,𝐵′3 A 3′,B 3′ 第 0 0 位，𝑎 0 ≠𝑏 0 a 0≠b 0．假设 𝑏 0 >𝑎 0 b 0>a 0（𝑎 0 >𝑏 0 a 0>b 0 时结果相同），易知 𝑏 0 −𝑎 0 ∈{1,2}b 0−a 0∈{1,2}．𝐴′3 A 3′ 的位 𝑖 =1,2,3,…i=1,2,3,… 对于 𝐴′3 A 3′ 的值的贡献为 𝑆 1 =𝑎 1 ×3 1 +𝑎 2 ×3 2 +…S 1=a 1×3 1+a 2×3 2+…，𝐵′3 B 3′ 的位 𝑖 =1,2,3,…i=1,2,3,… 对于 𝐵′3 B 3′ 的值的贡献为 𝑆 2 =𝑏 1 ×3 1 +𝑏 2 ×3 2 +…S 2=b 1×3 1+b 2×3 2+…．由于 𝐴′3 =𝐵′3 A 3′=B 3′，得 𝑆 1 −𝑆 2 =𝑏 0 −𝑎 0 S 1−S 2=b 0−a 0．𝑆 1,𝑆 2 S 1,S 2 有公因子 3 3，而 𝑏 0 −𝑎 0 b 0−a 0 不能被 3 3 整除，与假设矛盾，因此 𝐴′3 ≠𝐵′3 A 3′≠B 3′

3. 当 𝑌 1 0 <0 Y 10<0，证法与 𝑌 1 0 >0 Y 10>0 相同．

故对于任意十进制 𝑌 1 0 Y 10，均有唯一对应的平衡三进制 𝑋 3 X 3．

## 练习题

Topcoder SRM 604 PowerOfThree

本页面部分内容译自博文 Троичная сбалансированная система счисления 与其英文翻译版 Balanced Ternary．其中俄文版版权协议为 Public Domain + Leave a Link；英文版版权协议为 CC-BY-SA 4.0．

> 本页面最近更新：2026/1/30 14:50:40，更新历史
> 发现错误？想一起完善？ 在 GitHub 上编辑此页！
> 本页面贡献者：Yanjun-Zhao, Tiphereth-A, Enter-tainer, Falicitas, HeRaNO, iamtwz, ImpleLee, Xeonacid
> 本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供，附加条款亦可能应用