设计一个摩尔机来生成二进制数的1的补码。
摩尔机有6个元组,如下所示:
(Q, q0, Σ, O, δ, λ)
其中,
- Q:有限状态集
- q0:机器的初始状态
- Σ:有限的输入符号集
- O:输出字母表
- δ:转移函数,其中 Q × Σ → Q
- λ:输出函数,其中 Q → O
状态转换图如下:
解释
- 步骤1 - q0 是起始状态,输入 '0' 转移到 q1 状态,输入 '1' 转移到 q2 状态,并生成输出 0。
- 步骤2 - q1 在输入 '0' 时转移到自身,输入 '1' 时转移到 q2 状态,并生成输出 '1'。
- 步骤3 - q2 在输入 '0' 时转移到 q1,输入 '1' 时转移到 q2,并生成输出 '0'。
例如,
取一个二进制数:1011。
输入
输入 | 1 | 0 | 1 | 1 | |
---|---|---|---|---|---|
状态 | q0 | q2 | q1 | q2 | q2 |
输出 | 0 | 0 | 1 | 0 | 0 |
让我们为给定的语言构建状态转换表。该表如下所示:
当前状态 | 下一状态 | 输出 | |
---|---|---|---|
0 | 0 | ||
->q0 | q1 | q2 | 0 |
q1 | q1 | q2 | 1 |
q2 | q1 | q2 | 0 |
广告