如何输出强度大于15的红石信号?看本帖你就知道了
2014/3/7更新
理论值960,但实测结果是897.另外如果用NBT方法,最大值实际上是2147483647 ,orz……
感谢@GerryZ @PTmissionary 的相关测试以及@719823597 提供的辅助性mod。
最初的灵感来自维基百科里比较器条目的一句话:
通过使用/give指令,获得一叠比正常堆叠数还要多的物品是可能。打个比方,床一般是不会堆叠的,但你可以使用/give <玩家> bed 27来获得一叠27张床。如果你将这叠床放入箱子内,这将产生强度为15的信号。通过使用这个技巧,你可以制造出空满度高于100%的箱子(或其他容器)。虽然你无法将强度大于15的信号储存在红石线中,红石比较器可以内部储存大于15的信号强度。这个内部强度可以被消减来达到红石线可以储存的强度。打个比方,如果在箱子内放入29张床,将比较器测试箱子然后调至减法模式,并减去最大强度的信号(15),此时比较器会输出强度为1的信号。
之后我首先的想法是利用这个来制作长周期精确脉冲,后来GZ的mc开着,就让他做了测试,然后发现了很多新特性,我利用这些特性制作了一个模电乘法器和一个超强信号分析器(也可作除法器),本贴提供存档下载。
一,超强信号的发生
这是一个放满物品的漏斗,输出的是强度为15的信号,如果用比较器减去15,得0,红石灯不会亮。
而相同的结构,如果换成水瓶,灯就亮了,这是为什么呢?
原来,水瓶是1堆叠物品,只要放5个就能输出15强度的信号,现在足足放了320个,多出315个,当然足够点亮红石灯。
如何实现呢?
可以用give命令实现,也可以用TMI直接拿出。
二,超强信号的基本性质
1.用红石线连接两个比较器:不会传递超强信号!
红石线最大强度只有15,任何过强的信号都会统一按照15处理,因此在使用红石线制造超强信号电路时,请注意信号的取值范围!
2.用比较器连接:可以传递
3.用方块充能连接:可以传递
注意:超强信号并不是无限的,其最大强度为15*64=960,因此制作大型电路时请考虑值得范围。
运用超强信号的性质,可以制造一些传统模电不能或者很难完成的电路,而相对于数电,有些还不可思议的简洁。
这是一个乘法器,可以计算F*F以内的乘法,按16进制输出。现在计算的是E*E=C4(14*14=196)
3,乘法器
这是整体结构。
有了超强信号,我们可以进行便捷的连加操作,而不用担心结果溢出。因此乘法器可以非常简单。
这一部分的作用是分开信号,使让上面的一排比较器接收到相同强度的信号输入。(红色的E是mod方块,作用相当于一个输出E(14)强度信号的红石块)
然后这个决定了将多少个比较器做加法
这是加法器的一部分,漏斗里按照之前所说加入了5组水瓶。
经此三步,即可做出乘法器,但此时输出的是一个超强信号,该如何将其变为多位16进制信号呢?请看下页
4,分析器
这是分析器部分,作用是将一个不超过256的超强信号转化为两位十六进制数。稍作改动也可以转换为十进制,分析范围也可以扩大至0-960。
这是一条链式结构
每个漏斗的作用是把原信号减去16,减完为止
此为产生16信号的漏斗
着重讲解这一部分
综合判断单元总图,宽2,输入1个,输出两个,分别为下部的输出1和顶部的输出2。
理论部分:
此处将信号减去15,如果还有强度,即充能活塞将方块推下。
推下的方块将禁止输入信号通过另一条路线输出,此为输出1
输出1:直接用比较器和红石线相连
输出个位
16+信号充能另一个活塞,输出漏斗中所含1物品对应的1强度信号,此为输出2
输出2:用加法器将所有输出2相加,最后再加一
(此处我误以为第一个16+一定会出,没有考虑到总输入小于16的情况,这是一个错误。请大家在最前面再加一节判断单元,而不再作此+1)
加法器最前
加法器最后,与最前输出信号相差1,起到+1作用。
以上讲解完毕。
5,总结
作为一个被忽视的性质,超强信号使模电红石进入了一个新时代,尽管还有种种局限,但从此较小数字的加减乘除可以全用模电来进行了。模电红石不再是原先的那个“又大又慢”了,我们也有了自己的优势。
下载链接(已失效):http://pan.baidu.com/s/1qWtu9Zm2015.5更新链接:http://pan.baidu.com/s/1o6wutZG
只是作为一个引路贴,电路仍需优化,算法也有改进余地,本帖旨在抛砖引玉,激发大家对此新的想法和创意。
此文除所注明引用外完全原创,在这一领域属于全球首发,转载请注明出处!
@MCXX户 @jianghr @PTmissionary @geludan @PpY_SK
[birch]
[groupid=143]The Redpixel[/groupid]
-
2014-03-02_16.59.05.png (93.69 KB, 下载次数: 227)