📜  用于 1 和 2 的补码的图灵机

📅  最后修改于: 2021-09-28 10:08:53             🧑  作者: Mango

先决条件 – 图灵机,二进制数的 1 和 2 的补码

问题 1:

画一个图灵机来找出二进制数的 1 的补码。

一个二进制数的1的补码是另一个二进制数,它是通过翻转其中的所有位而获得的,即将0位转换为1,将1位转换为0。

例子:

方法:

  1. 从左到右扫描输入字符串
  2. 将 1 转换为 0
  3. 将 0 转换为 1
  4. 到达 BLANK 时,将头部移至起点。

脚步:

  • 第1步。将所有 0 转换为 1,将所有 1 转换为 0,如果找到 B 则向左移动。
  • 第2步。然后忽略 0 和 1 并向左走,如果找到 B 则向右走
  • 第 3 步。停止机器。

这里, q0表示初始状态, q1表示过渡状态, q2表示最终状态。
0、1是使用的变量,R、L表示左右。

解释:

  • 状态 q0 将“1”替换为“0”,将“0”替换为“1”并向右移动。
  • 当到达 BLANK 时,向左移动。
  • 使用状态 ‘q2’ 我们到达字符串的开头。
  • 当达到 BLANK 时向右移动并达到最终状态 q2。

问题 2:

画一个图灵机来找出一个二进制数的 2 的补码。

二进制数的2 的补码是在二进制数的 1 的补码上加 1。

例子:

方法:

  1. 从右到左扫描输入字符串
  2. 传递所有连续的“0”
  3. 对于第一个“1”,什么都不做
  4. 之后,将1转换为0并将0转换为1
  5. 到达空白时停止。

脚步:

  • 第1步。首先忽略所有 0 和 1 并向右走,然后如果找到 B 则向左走。
  • 第2步。然后忽略所有 0 并向左走,如果找到 1 则向左走。
  • 第 3 步。将所有 0 转换为 1,将所有 1 转换为 0,然后向左移动,如果找到 B,则向右移动并停止机器。

这里, q0表示初始状态, q1 和 q2表示过渡状态, q3表示最终状态。
0、1是使用的变量,R、L表示左右。

解释:

  • 使用状态 ‘q0’ 我们到达字符串。
  • 当到达 BLANK 时,向左移动。
  • 使用状态 ‘q1’ 我们传递所有 0 并首先找到 1 向左移动。
  • 传递单个“1”并向左移动。
  • 使用状态“q2”,我们对每个数字进行补码并向左移动。
  • 当达到 BLANK 时向右移动并达到最终状态 q2。