《图灵完备》游戏攻略第二章:算术运算和存储器——半加器

《图灵完备 Turing Complete》游戏攻略保姆级详解。

第二章:算术运算和存储器

半加器

布尔值

从本关开始的大部分关卡,我们很有可能把红色叫做0,把绿色叫做1。
  • 布尔值是“真(True)”或“假(False)”中的一个。
你可以简单的这样理解“布尔值”:
  • 真 == True == 1 == 绿
  • 假 == False == 0 == 红

当我们在说“1”和“绿”时,其实我们说的是同一个东西。

如果你还不理解什么是布尔值,请点击这里跳转到百度百科查看,不用了解的太深入。

总和、进位

我们在学习二进制时学习过:
  • 总和(SUM)
  • 进位(CAR)
关卡解析

我们有两个输入端,两个输出端,但本关比较简单。先观察:

可以分析出这关要让我们做什么:
  • A:若都是0,输出0
  • B:若有且只有1个1,在总和输出1
  • C:若有2个1,在进位输出1

首先我们发现,如果只看A和B,可以总结为“如果输入不同,就在总和输出1”,这显然是异或门的性质,因此我们先这样接入一个异或门:

接下来,然后来看C,我们只需要在两个输入同时为1时,输出到进位即可:

本关最终答案

半加器

我们本关中做出的电路,整体来看,叫做半加器。半加器是指对两个输入数据位相加,输出一个结果位(SUM)和进位(CAR),没有进位输入的加法器电路。

延迟线

关卡解析

这关获得了延迟线,可以把数据延迟一刻再输出到下一段电路。目标是延迟两刻,其实只要在一条线里加两个延迟线即可:

本关最终答案



加倍

字节

字节,单位比特(bit),1bit=1个8位数据=8个1位数据。
你可以简单的这样认为:1个8位数据=1个8位的二进制数

8位分线器、8位集线器

本关我们获得了8位分线器、8位集线器这两个元件。
  • 8位分线器:将1个8位数据拆解为8个1位数据
  • 8位集线器:将8个1位数据集合为1个8位数据

举个例子:

根据我们之前讲过的十进制转二进制,8位分线器把90这个数字拆解为2、8、16、64,那么这4个数字就是绿色,其他数字就是红色。八位集线器会把这些数字再合到一起,再变成90。

关卡解析

本关我们要制作一个将数字翻倍的电路。其实非常简单,只要把每个1位数据都×2即可。本来应该接2的咱们接4,本来应该接4的咱们接8,每个都翻倍,数据就翻倍了。

本关最终答案

全加器

关卡解析

本关几乎和“信号计数”那关的1、2、3完全一样,只是把红、绿换成了0、1。

本关和半加器类似,只不过输入变成了三个。我们观察表格,找规律,得出要求:
  • 没有1 不输出1
  • 1个1 在总和输出1
  • 2个1 在进位输出1
  • 3个1 在总和和进位都输出1
这四种情况其实分别对应二进制里的 0、1、10、11 。
首先,第二条要求可以直接照搬我们做过好几次的电路,还记得吗?
  • 某些情况下,“判断输入是否不同”==“判断1是不是奇数个”

2号要求处理完毕,现在我们处理3号要求。根据我们在“信号计数”那关的经验,当我们做好3号要求时,4号要求应该会自动做好,因为4号要求其实是2号要求和3号要求的叠加。

如何判断是否有2个1,我们也学过。两两进行与门判断,然后再用或门连接:

本关最终答案
我们发现,要求4真的自动做好了。这就是本关的电路。

奇变偶不变

循环依赖白名单

我们之前学习过,在本游戏中,循环依赖是不被允许的。但是延迟线的加入可以解决这个问题。

游戏中的方形引脚,不会造成循环依赖,因为它不会影响同一刻的输出值。

关卡解析

本关要求我们制作一个“再偶数刻输出0,在奇数刻输出1”的电路。

观察真值表发现,本关的输入全是0,因此最终结果与输入毫无关系,所以实际上我们可以直接将输入端抛弃,这是一个障眼法。我们可以这样制作:

本关最终答案
现在我们一刻一刻来看这个循环:
  • 第0刻:黄色线灭,绿色线亮。延迟线存储了信号,将在下一刻放出
  • 第1刻:延迟线存储的信号被放出,黄色线亮,绿色线因为非门灭掉
  • 第2刻:同第1刻...




1位开关

开关(S)

只有当上方被激活时,右方才能有反应,否则无论左侧输输入什么,输出都是0。

关卡解析

本关我们要制作一个异或门(XOR),也就是当两边不一样就输出1。但是我们的材料有限,只能用2个非门和2个开关。我们将1加上非门作为开关,2作为通向输出的线路:

这时我们会发现:
  • 当1开启时,输出一定为0
  • 当1关闭时,输出2直接影响输出结果
此时我们还差两种被遗漏了,也就是:
  • 当2开启时,输出一定为0
  • 当2关闭时,输出1直接影响输出结果

这样才是一个完整的异或门。我们需要将这个电路翻倍,也就是将1加上非门作为开关,2作为通向输出的线路:

然后将两个电路拼在一起,注意不要插错孔:

本关最终答案

短路处理

我们仔细看一下这个电路的最右侧。在我们之前的关卡中,如果这样连接会显示短路,但是本关并不会。请仔细阅读本关关卡说明第一页,弄清楚这是为什么!

1位取反器

观察

观察本关背景,我们可以看到有很多水滴型的图案,它们由分型构成。而分型,就意味着无限。因此,本关背景所暗示的是“无限”。它们就像是一朵朵绽放的花朵,象征着无限的生命力。它们又像是一个个的灵魂,象征着死亡。本关,是生命与死亡的无限碰撞,是矛盾的产生与矛盾的化解,是无限复杂的宇宙,而无限与本关毫无关联,实际上这个背景图也与本关毫无关联(⊙x⊙;)

关卡解析

让我们来看一眼真值表:

怎么这么眼熟?这不就是异或门吗?!恭喜过关。

本关最终答案

1位取反器

通过本关我们得知,背景可以深刻的影响人类认知(不是

异或门其实也可以被当作一个取反器,你可以把它理解成是一个可以开启或关闭的非门。你可以把一端作为要输出的数据,那么另一端就可以用于去决定是否要取反。




8位或

按位或运算

按位或运算符是双目运算符。其功能是参与运算的两数各对应的二进位相或。
法则:只要对应的2个二进位有一个为1时,结果位就为1 。

关卡解析

理解了按位或运算的意思,本关就很简单了。按照 按位或运算 法则,我们将2个8位八位线,拆成16个1位线。把对应的位进行 逻辑或运算 然后再放入集线器。

以上是用1举个例子,接下来把剩下的14个都像这样操作:

本关最终答案

8位非

关卡解析

本关异常简单,解题方法就写在下面。

本关最终答案

8位非

性质:运算前+运算后=255 ,举个例子:

28+227=255
反码
把一个二进制数的每位都反转,例如 10101010 和 01010101 互为反码。其实这一关就是在获取一个二进制数的反码,这种方式我们以后还会用到。

8位加法器

关卡解析

我们先将输入的2个8位数据拆分为16个1位数据,然后将他们放入全加器进行相加操作,再输出至集线器:

这样我们就解决了第0位,现在我们要解决第1位。根据我们之前讲过的二进制原理,分线器上2个写着“2”的输入端,实际上是写着“1”的位的进位。那么下面这三张图是,画红圈的三个点,实际上应该是在同一位上的:

  • 请确保你理解了。

所以说,我们只要把这三个同位的点加起来,再输出到集线器的“2”即可:

接下来,三个画黄圈的点,就又是在一位上的了。我们就一直这样制作下去,一直做到不能再做,我们一共需要8个全加器:

最后一个全加器右下角的点又是一个进位,是第九位,超出了8位数据,我们只要把它连到CAR上就好:

本关最终答案

8位加法器

我们本关的整个电路构成了一个8位加法器,它可以对输入的两个数据求和。



负数

关卡解析

在本关中你会学习使用补码表示法表示负数。本关又是类似小游戏,玩着玩着你就能发现所有奥妙。

在已经学习过二进制的前提下,本关不需要在过多做解释,注意关卡结束时的要点总结即可:

补码

把一个二进制数的反码+1就是补码,例如 10101010 的反码是 01010101,再把 01010101+1 得 1010110。1010110就是10101010的补码。

相反数

一个二进制数的相反数其实就是它的补码。例如,10101010的相反数是1010110。

数据选择器

关卡解析
分析本关问题,可以得出是需要我们制作一个这样的电路:
  • 选通器为红,将A路输出
  • 选通器为绿,将B路输出

首先我们在选通器上做两条路,这两条路相反,不是A亮就是B亮:

然后放置开关,注意必须要放8位开关:

连接即可,注意不要弄错A和B:

本关最终答案

相反数

关卡解析
我们倒着来推:
  1. 如何获取相反数?我们在“负数”里讲过:“一个二进制数的相反数其实就是它的补码”
  2. 如何获取补码?我们在“负数”里讲过:“把一个二进制数的反码+1就是补码”
  3. 如何获取反码?我们在“8位非”里讲过:“把一个二进制数的每位都反转就是反码”

因此,我们首先把每一位都反转,获取反码:

然后,我们只要将这个反码+1,就是补码,而补码就是它的相反数。
胜利在望了!可是如何获取1呢?我们在“半加器”里讲过:
  • 真 == True == 1 == 绿

也就是说,我们只要使用“高电平”元件,当作1即可。使用8位加法器,将刚才获得的反码,与高电平的1进行相加,即可获得补码,也就是相反数:

本关最终答案

题外话

之前还行,玩到这突然感觉这个游戏门槛并不低。光是玩这一关,我读各种资料就至少读了一个半小时,最后搭建只花了一分多钟。我感觉如果不知道“一个二进制的相反数其实就是它的补码”这个原理,估计想破脑袋也想不出来......

总线

关卡解析

我们将4条蓝线汇集到一条上,这条线叫做“总线”。总线的左侧,我们通过两个8位开关,控制应该让哪个数据保持在总线上。总线的右侧,我们通过两个8位开关,控制数据会进入哪个输出端。

接下来做的都是以前做过的。每个1位输入端控制两个开关,并且一次只能有一个开关开启,因此我们每组里添加一个非门保证始终一开一闭,注意不要连错:

本关最终答案



《图灵完备 Turing Complete》游戏攻略保姆级详解

你可以通过《图灵完备》这款游戏,学习处理器架构,搭建自己的伟大作品。游戏闯关模式的最终目标是搭建一台可以运行的计算机。我将会开始更新这款游戏的攻略,详细解析每一关的通关思路,并且讲解背后的原理。


以下三章为《图灵完备 Turing Complete》游戏手把手教程(教程原创为知乎:淘气喵w,特此说明)
第一章:基础逻辑电路

第二章:算术运算和存储器

第三章:处理器架构

24小时热点

热点专题

免费的行情软件app网站在国外有哪些?

区块链看行情的软件,简而言之,就是一类能够实时提供数字货币行 ...

2382721

波场区块链浏览器

2024年最新十大不收费看盘软件排名公布

随着股市交易的普及和技术的发展,投资者对高效、可靠且免费的看 ...

1132523

波场区块链浏览器

Bitfinex(香港B网)

Bitfinex交易平台目前仍处于试运营阶段,该平台由iFi ...

727339

Hi元宇宙

OEX全球站交易所介绍

OEX(www.oex.com)隶属于OEX Interna ...

643654

Cointelegraph Bitcoin

挖矿app十大排名,挖矿软件推荐

区块链技术自比特币诞生以来,已经在全球成为最热门的一项技术, ...

577399

波场区块链浏览器

FSN币,Fusion

FUSION是一个公开的区块链,通过提供跨链、跨组织和跨数据 ...

500268

ImToken 多链钱包

区块链免费看行情的网站有哪些?

区块链行情网站,简单来说,就是提供数字货币实时价格,交易量, ...

498285

区块链圈小菜鸡

1U等于多少人民币?U币怎么兑换人民币?

U币(如USDT)是一种基于区块链技术的稳定币,其价值与美元 ...

489022

区块链圈小菜鸡

全球币圈十大交易所排名有哪些?最新2024年币圈十大交易所排行榜

在加密货币市场中,交易所是投资者进行数字资产买卖的关键平台。 ...

455023

区块链圈小菜鸡

2024年人气最高的免费看行情的软件大全

区块链看行情的软件是指那些能够提供实时数字货币行情、市场动态 ...

454369

波场区块链浏览器