本帖最后由 阿散ASun 于 2015-11-27 22:22 编辑

大家好,我是来自TRP的sine qua non,今天给大家带来的是一套关于负信号强度(以下统称为渣模)的黑科技
事实上在很早以前乙烯就已经研究过负堆叠了,而当时研究以“不能输出”而告终
而后来在阿散和resens,pac的研究下,负强度信号终于找到得以应用的方法

首先渣模可以通过
  1. /give @p minecraft:command_block 1 0 {display:{Name:"Analogue Command Block"},BlockEntityTag:{SuccessCount:信号强度}}
复制代码
或者
  1. setblock ~ ~1 ~ dispenser 1 replace {Items:[{id:物品,Slot:0b,Count:物品数量}]}
复制代码
这两个指令来产生,渣模仅能在比较器中体现,传递到红石上会强行降级为0
而针对第二条指令来说,物品数量与输出强度是按照输出强度公式的,即向下取整(1 + (容器内的物品数量 / (容器的物品槽总数 * 64)) * 14)
特别要注意的是当物品数量为0时输出的强度为1

接下来讲一下渣模的具体使用方法
之前在对于渣模的运算可行性进行测试时得出"无法进行运算"结论的原因是因为忽视了比较器的因素


首先讲一下比较器的减法模式的比较原理
比较器再进行减法运算之前,会优先判断两侧输入的信号强度大小,若无输入则判定为0
在以前的实验当中仅仅只有对一端输入一个渣模信号,而另一侧则默认为0
比较器在比较了两边的输人大小之后选择了0来进行减法运算,故运算结果与实际不符
而解决以上问题的方案就是对于比较器两侧输入相同的渣模信号

渣模的运算演示

此外,通过渣模可以证明出0强度的信号不能用于运算之中
两侧的命令方块输出为-214,如能正确运算的话输出将为214,然而输出却仍为15
渣模信号不能通过减法产生

命令方块输出的模红信号强度为21,15-(15-21)-15=0
可以看出0强度的信号不能用于运算之中,且渣模信号不能通过减法来产生
最后讲一些渣模的一些特性
渣模信号无法体现在红石当中,且红石元件无法对其进行相应

渣模信号产生时比较器的状态改变不能用于更新


↑可以看到TEUD根本没有反应

产生的渣模信号仅能传递一格的比较器
而这个属性决定了渣模每次只能进行一次运算,且不能储存在比较器环当中
渣模所能达到的最低信号强度为-2^31+1,即-2147483647,与强模的最高信号强度相对
而模红运算的计算范围为-2147483647~2147483647,超出计算范围的运算结果将与正常的运算结果相异
而在由指令刷出的负堆叠物品当中,若单元格内物品数量小于-128,则重新进入存档时容器内的物品数量会变为0在用渣模进行侧面屏蔽的实验时,发现结果依然是正常的

再次验证了侧面屏蔽的结论
渣模在比较器比较模式下的体现

【图中两侧的命令方块输出为-214,第三个命令方块的输出为-256】
与强模不同的是,渣模是可以进行具体的比较的

渣模信号的优点在于改变了模加的原理,运用了负负得正的方法使单纯比较器的加法成为可能另外还提供了一种全新的得到强模的方法,运用比较器的减法模式即可得到
然而渣模仍具有很大的局限性,传输距离有限,产生方式麻烦,而且需要在两侧对比较器输入



渣模之所以叫渣模的原因是为了与强模相对而取的名字,其实是当时在和pac开玩笑的时候提出来的
当时在群里说“渣模指的就是信号强度为负数的模红信号”然而那个时候比较器还不能读取负堆叠
所以发现渣模运算的可行性之后就将负信号强度的模红信号称为渣模




特别感谢@719823597 度度所提供的检测信号强度的mod
@pacerrecap @乙烯_中国 感谢pac和乙烯提供思路
@Resens resens 感谢resens的援助





[groupid=143]The Redpixel[/groupid]