1

基本上我有 2 个无符号 8 位二进制数,我需要使用布尔逻辑来找出哪个更大,而我终生无法弄清楚从哪里开始。使用逻辑门...

显然,我必须分析每一位并找出哪个更大,但我如何将它们整合在一起?

假设我有 x 和 y,如果 x < y(x 和 y 是 8 位无符号二进制数),我想返回 true。我该怎么做呢?

我想过找出哪个具有最重要的位,但是如果它们都相同怎么办?

有人有什么想法吗?

4

4 回答 4

2

我想过找出哪个具有最重要的位,但是如果它们都相同怎么办?

您从“最高有效位”向下到“最低有效位”,直到有差异。第一位设置为“1”的数字最大。

为了实现这一点,对每个数字使用一个“移位寄存器”,对 SR 的“out”位使用一个比较器。

于 2010-02-26T18:51:22.423 回答
0

你已经成功了。是的,从最重要的位开始。如果它们都相同,则移动到下一位(向右移动,朝向最低有效位)。当您找到一个已设置的位(而另一个未设置)时,那就是更大的数字。

于 2010-02-26T18:52:32.110 回答
0

确实,您走在正确的轨道上。首先比较最高有效位。如果它们不相等,则您已经可以以一种或另一种方式输出结果。如果它们相等,那么您只需输出比较第二个最高有效位的结果。依此类推,直到最低有效位。以某种方式递归。结果,您将为每个位重复相同的门配置,除了最后一个会有轻微变化(因为在那之后没有其他位)。

于 2010-02-26T18:53:19.893 回答
0

如果一个的高位“更大”(即:它是 1,另一个是 0),那么 number 是更大的。

如果它们相同,则对下一位执行相同的测试。

所以你想要类似 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])
)

对于您的基本情况(即:当没有更多位要测试时),根据您想要 > 或 >= 使用 false 或 true。

于 2010-02-26T18:59:56.493 回答