本篇教程由作者设定使用 CC BY-NC 协议。

    红石控制是一个很强大的mod,借助二进制方式控制这个世界,可以实现众多目的,甚至再现一个区域。毕竟,这本身就是一个二进制的世界。

    在这些教程中,我会尽我所能介绍这个mod中各种方块的用途,以及猜测其运作结果的方式。

    在阅读这些教程之前,我认为:

        你知道什么是二进制。

        你知道基础的二进制计算。

        你真的好好看了游戏内物品的介绍。


    首先,二进制的编码是由一串由0,1有序组成的一串数字,以其特定的排列顺序记录信息。

    其次,在绝大多数情况下,我们并不能用完一个存储单位所能存储的数据,此时将众多数据按一定的规则组织在一起就能最大化的利用存储空间。其实在游戏里根本没什么人在意 而在这个mod中最显然的用途就是用来绘制图像与控制可控物品使用器的行为。

    作者在mod中提供了一些方法,让我们能对这些数据进行操作,譬如二进制打包器与二进制解包器。实际上FPGA 编程器更好用,但是这个就真的不知从何说起了

    二进制打包器可以将几段二进制编码组合为一段,而二进制解包器在相同模式下可以将数据无损恢复,而在不同模式下,则会以另一种方式进行恢复。

    首先,先说结论:

        比较浅显的说法是:打包器是将输入的的值转换为二进制后从左至右按in3 in2 in1 in0 的顺序写下。解包器是将数据转换为二进制后从右往左,按照4nbit->4*nbit中n的值分组,然后依次从左往右输出至in3 in2 in1 in0。

        如果懂得一定的编程知识的话:打包器是对数据进行左移t*n(n为inn中n的值,t为4*tbit->4tbit中的t的值)后进行为或计算。解包器是将数据左移t*n(n为inn中n的值,t为4tbit->4*tbit中的t的值)后与2n+1的模输出。真要会编程的话还要我来解释

  


    接下来是分析过程:在此,借助这个装置进行实验:红石控制基础——二进制打包解包器的用法及测定方式-第1张图片

    这个装置的作用是将4个1位的信号打包,显示在显示屏上,同时解包,显示在另一款显示屏上。

    首先先确定二进制打包器的工作顺序。

红石控制基础——二进制打包解包器的用法及测定方式-第2张图片

红石控制基础——二进制打包解包器的用法及测定方式-第3张图片

    无论在十进制中还是在二进制中,一个特定的数必定能被一种特定的表示方式表示,我设置,在开关为开的情况下,输出1,而在关的情况下,输出0,通过打开不同的开关,可以确定四串二进制编码在打包器中处理的顺序,同时对结果进行解包进行输出,得到输出顺序。将开关换成滑块模块,对其他模式进行预测,检验,得出结论。

    但是还有三种情况:

        当输入值超过位数时如何处理:将in0的信号接入滑块模块,将滑块模块调整为5,可以看到,显示模块显示的值为3,这说明,对于越界数据,其只能输出其能输出的最大值,而且,由于5的二进制是101,而3是11,由此可见,对于越界数据,其只能输出能输出最的大值,而并非进行运算。作者啊,这是个二进制为主的mod,能不能严谨点红石控制基础——二进制打包解包器的用法及测定方式-第4张图片

        当解包时,如果输入的值超过解包的值时会发送什么:在in0中输入3,在in1与in2中输入1,那么应当读取的值为01010111,但是在读取时,显示的输出是0111,这就说明,解包器是从右往前读取的。而对于越界内容,其选择直接忽略。红石控制基础——二进制打包解包器的用法及测定方式-第5张图片

        当解包时,输入的值位数少于解包的位数时:我们在打包器中输入0110,解包器输出的结果却是0012,这说明其解包时是进行了如下分段00|00|01|10,也就是说,对于位数不足的数据,,解包器会默认以0补足位数。红石控制基础——二进制打包解包器的用法及测定方式-第6张图片