不仅仅是布尔逻辑中的运算符(逻辑门)

时间:2010-02-26 18:47:02

标签: boolean-logic boolean-operations

基本上我有2个无符号的8位二进制数,我需要使用布尔逻辑来找出哪个更大,我不能在我的生活中找出从哪里开始。使用逻辑门......

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

假设我有x和y并且想要在x< y(x和y是8位无符号二进制数)。我该怎么做呢?

我想找到哪个有最重要的位,但是如果它们都是相同的呢?

有人有任何想法吗?

4 个答案:

答案 0 :(得分:2)

  

我想找到哪个有最重要的位,但是如果它们都是相同的呢?

从“最重要的位”向下进行到“最低位”直到存在差异。第一位设置为“1”的数字最大。

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

答案 1 :(得分:0)

你在那里的一部分。是的,从最重要的一点开始。如果它们都相同,则移动到下一位(向右移动,向最低位移动)。当你找到一个被设置的位(而另一个不是)时,这就是更大的数字。

答案 2 :(得分:0)

确实,你走在了正确的轨道上。首先比较最重要的位。如果它们不相等,您可以以某种方式输出结果。如果它们相等,那么您只输出比较第二最高位的结果。等等,直到最不重要的一点。在某种程度上递归。在结果中,您将为每个位重复相同的门配置,除了最后一个将略有变化的门(因为在该位之后没有其他位)。

答案 3 :(得分:0)

如果一个的高位是“更大”(即:它是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])
)

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