转自:量子位(ID:QbitAI)
辛丑牛年(2021),《我的世界》,一高二学生因爆肝在B站火了。他从未接触过数电,一切从零开始,仅仅是为了搞清计算器的原理。就直接在《我的世界》里肝出了个“理论最快”四则计算器:这位ID为“史蒂夫的骨灰”的Up主,是从去年10月开始这个项目,由于在上高二,只有周末和放假才有时间推进。瞧瞧,这密密麻麻的零部件,这可都是他“亿点亿点”纯手工搞上去的。也有人回忆起读过的《编码》一书中的话——“这么多继电器组合太大了,现实中做不到”,而后惊呼道:理论最快四则计算器
视频里说的gt也就是“游戏刻”(GameTick),指理论上《我的世界》游戏程序更新一次数据的时间:0.05s。这里可以看出,加减乘除四种运算全在1游戏刻之内得出结果!就是为了实现这个速度,UP主骨灰君才把计算器体积做到这么大、结构这么复杂。过去在《我的世界》中用红石电路做计算器,或多或少都需要一些运算时间。这是因为游戏中传输信号的元件会产生0.1秒的延时。与整个游戏的运行速度不同,红石电路是把1秒分成10份,每份称为1红石刻,也就是0.1秒。这样无论怎么进行优化,都不能在小于1红石刻的时间里完成运算。骨灰君采用另一个思路,用另一个元件活塞来实现电路。活塞可以在小于1红石刻的时间内完成一次推拉,相当于在电路中产生一个脉冲信号。以这种方式传递信号,整个电路的运算时间,理论上限就是1游戏刻=0.05s了。当然,由于CPU性能的限制,在个人电脑上实际运行时间会长一些。整套计算器运行起来非常吃配置,游戏中这0.05s,现实里CPU要跑6s。怎么肝出来的?
当时骨灰君的想法非常的简单,就是想用《我的世界》来研究一下计算器的原理。所以就先设计了一个加法架构,一段时间之后,还搞出来了个乘法器。当时的他,其实没有想过做完整的一个计算器,但后来觉得既然开始了,那就一步步研究吧。想到可能很多人是看到我的工程动态才留下的,我更应该把这个工程做到底。
从动态区中不难看出,骨灰君真的就是一步一个脚印,每突破一个困难就会记录下来。例如把二进制转为BCD码的模块就得搭700米长的方块,甚至超过了游戏的默认显示范围。BCD码是用4位二进制表示十进制中的0-9,相当于不把123当成“一百二十三”,而是当成“一二三”再分别用二进制表示。再例如由于耗时过长,游戏都更新了,有改动的部分还得重新调整:于是,就这么一点一滴像打地基一样,计算器的各个部件就做好了。网友:5000粉整出50W粉的活
回到这个项目的初衷,其中一个让骨灰君坚持的理由,就是为了当时近5000的粉丝。而有网友认为,Up主的工程,堪称“50W粉的活”。同时也期待骨灰君下一次的力作,不过要等到高考以后了~[1]https://www.bilibili.com/video/BV1Xf4y1G73s
[2]https://space.bilibili.com/84738502/dynamic
[3]https://minecraft.fandom.com
爆肝200天!18岁上海高中生自制机器人,250行代码「注入灵魂」