泰拉瑞亚电路装置有哪些技巧 泰拉瑞亚电路装置技巧汇总( 三 )


无论如何,这只是一个如何组合设备的基本例子 。在构建更大的设备堆栈时,请记住我提到的规则(每比特一根垂直线、交替的电线颜色和单独的触发器线),因为我将在后面的教程中展示的大多数设备都将使用这些规则 。
使用比较器比较数值
比较器是将两个数值作为输入,并确定它们是相等的还是一个值大于另一个值的装置(比较大小) 。
要建造一个二进制数值的比较器,需要考虑关于二进制数的两个很明显但是重要的事实: 1大于0;1在较高的地方(即左边)的数值大于1在较低的地方 。
知道这些之后,您可以比较两个二进制数字,方法是从左到右扫描它们,并找到第一个出现在同一位置的两个位不匹配的情况 。
例如,00110110大于00110010 。
如果您查看每个数字中最左边的位,然后一次向右移动一位,直到找到不匹配的位为止,你就会知道,结果是1的位,就必须是更大的数字 。
如果,在比较数字时,没有匹配过一对不同的位,那么你就知道这两个数字是相等的 。
下面是使用故障灯门实现此过程的方法:

泰拉瑞亚电路装置有哪些技巧 泰拉瑞亚电路装置技巧汇总



泰拉瑞亚电路装置有哪些技巧 泰拉瑞亚电路装置技巧汇总


这个比较器包含一个单比特比较(一行),它会触发三个输出端中的一个,从上到下的输出端的情况分别是蓝色=绿色、蓝色>绿色和蓝色<绿色 。
如果是单独比较一个位,你可以看到蓝线和绿线的位都连接到顶端的一对故障灯门 。如果位不同,这对门将向红线发送信号,如果它们相同则向黄线发送信号,从而继续下一位的比较 。
如果位不同,则红线触发一对仅由绿线控制的故障灯门 。如果绿线连接的位关闭,则“蓝色>绿色”的输出端将被触发,因为蓝线连接的位必须打开 。但是,如果绿线连接的位打开,则触发“蓝色<绿色”的输出端 。

使用Shift-Add算法来建造一个乘法器
现在你已经知道了如何使用累加器执行二进制加法,现在是使用累加器建造乘法器的时候了 。
在二进制中,乘法可以通过两种方式完成 。要执行X*Y,只需将X加进累加器Y次,也可以使用更有效的方法:Shift -Add 。Shift-Add类似于用手乘十进制数的长乘法方法 。在竖式乘法中(就是小学学的那个笔算多位数相乘的方法),把X乘以Y的每一位数字,然后把每一个结果相加在一起即为解(这里不需要多说) 。
类似地,使用Shift-Add,扫描Y中的每个位,对于每个数值为1的位,都会将X加到累加器中一次 。在每一步之后,左移X以便将其值增加到下一个位置 。
Terraria中的乘法器(示例)如下:
泰拉瑞亚电路装置有哪些技巧 泰拉瑞亚电路装置技巧汇总



泰拉瑞亚电路装置有哪些技巧 泰拉瑞亚电路装置技巧汇总


正如你所看到的,这是我向你展示的第一个需要一个半砖驱动来操作的装置 。这是因为Shift-Add方法需要对每一位都执行一次运算,在这种情况下需要执行8次 。
从上到下的第一行表示Y值,第二行表示X值,底部的一行用来保存结果 。当左下角开关被激活时,半砖驱动开启并激活产生一次移位,并在每个tick中执行一次操作 。在每次操作中,通过右移位从Y值中读取单个位 。如果来自Y的一个位的值为1,则黄线触发一组故障灯门,将X的当前值发送到累加器 。然后,X值被左移 。请注意,在Y值的右移和X值的左移之间放置了一个额外的故障灯门 。这是为了确保X值在被左移之前会被发送到累加器 。然后,半砖驱动重复这8tick的整个过程,直至完成乘法运算 。

推荐阅读