我的世界十进制三位数比较器原理分析
我的世界中比较器是一个比较有意思也比较有难度的东西,那么今天小编给大家带来的是MCBBS的ufof带来的十进制三位数比较器原理的分析,希望大家喜欢。
比较器一共有四个部分:
一、输入部分
二、数字显示屏
三、数字比较器
四、比较显示屏
先上一张图:
现在应该明白了吧?我们重点分析第三个部分:比较部分。
我们平常在生活中比较数字的时候,逻辑是这样的:
两个数字:A和B
先比较A的百位数和B的百位数:
如果A的百位数>B的百位数,那么A>B
如果A的百位数<B的百位数,那么A<B
如果A的百位数=B的百位数,那么往下比较十位数
如果A的十位数>B的十位数,那么A>B
如果A的十位数<B的十位数,那么A<B
如果A的十位数=B的十位数,那么往下比较个位数
以此类推。最后连个位数都一样的话那就说明A=B。
这是我们生活中的逻辑。不过在我的比较器中稍稍有一些改变(虽说基本逻辑是一样的):
就是说,A和B每一个位数都要进行比较。
如果A的百位数和B的百位数比较结果不为=,那么结果是什么就输出什么,而且十位数和个位数的结果作废。
如果A的百位数和B的百位数比较结果为=,那么就要看十位数的了。
如果A的十位数和B的十位数比较结果不为=,那么结果是什么就输出什么,而且个位数的结果作废。
如果A的十位数和B的十位数比较结果为=,那么就要看个位数的了。
最后比较A的个位数和B的个位数,是多少输出多少。
听到这里一定一头雾水吧?为什么要“作废”?原因是这样的:
比如说我要比较这两个数字:
432 342
A的百位数是4,B的百位数是3
A的十位数是3,B的十位数是4
A的个位数是2,B的个位数是2
A的百位数>A的百位数
A的十位数<B的十位数
A的个位数=B的个位数
如果没有“作废”动作,你就会发现:卧槽!! 大于、小于、等于都亮了!
所以说就得要有“作废”的机制。不然会出现混乱。
具体的逻辑我已经讲完了,现在再来讲讲如何应用到MC当中去。
关于比较:
先上整体图:
比较单位数是这样的:
比如说A的百位数为x,B的百位数为y
那么我们需要:
x-y
y-x
如果x-y>0,那么x>y
如果y-x>0,那么y>x
如果都为0,那么x=y
上图就是一位数的比较。
那“作废”是如何达到的呢?
这是一个十位数的输出。活塞由百位数的输出控制。如果活塞推动,那么十位数的输出会被强行阻断。这就是“作废”原理。
再来说说最终输出:
这个是大于和小于。但是你现在肯定会问:等于呢??
等于在后面:
如果两个数字既不大于也不小于,那就肯定是等于。所以我把两个信号的或门去了一个非门,这样就可以达到:两个都为关的时候输出为开。
查看所有0条评论>>