比在布尔逻辑算子更多(逻辑门)
-
23-09-2019 - |
题
基本上我有2无符号的8位二进制数,我需要使用布尔逻辑来找出哪个是较大的,我不能为我的生活出从哪里开始。使用逻辑门...
Obivously我来分析每一位,并找出哪一个是较大的,但我怎么把它一起?
说我有X和Y,并希望如果X 我想过要找拥有最显著位,但如果他们是什么都一样的吗? 任何人有什么想法?
解决方案
我想过要找拥有最显著位,但如果他们是什么都一样的吗?
您从“最显著位”继续向下“以最少的显著位”,直到是有区别的。与第一位设定为“1”的数目是最大的。
要实现这一点,使用用于每个数位“去”的SR的“移位寄存器”和比较器。
其他提示
您是部分有办法。是的,从最显著位开始。如果都相同,移动到下一个位(向右移动,对最低显著位)。当发现设定一个位(而另一个是不),即更大的数。
事实上,你在正确的轨道上。首先比较最显著位。如果它们不相等,你已经可以输出的结果,一个或其他方式。如果它们相等,比较的第二最显著位的,那么你只输出结果。依此类推,直到至少显著位。递归的方式。在结果你将不得不重复每个比特门的相同的配置,除了最后一个,这将有轻微的变化(因为有一个后没有进一步的位)。
如果一个高比特为“大”(即:它是1,另一个是0),则比数是大
。如果它们是相同的,然后对下一比特执行相同的测试。
所以,你要像这样类似C的伪代码(假装我们在阵列中的位和0位置最显著):
// true iff x > y
(x[0] == 1 && y[0] == 0)
|| (
(y[0] == x[0])
&& (the entire expression all over again, but with [n+1] instead of [n])
)
有关您的碱情况下(即:当没有更多的比特来测试),这取决于是否要使用伪或真>或> =
不隶属于 StackOverflow