基本上我有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])
)

有关您的碱情况下(即:当没有更多的比特来测试),这取决于是否要使用伪或真>或> =

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top