这有点棘手,对于我认为能够胜任这项任务的人来说,这是一个很好的挑战。我确实搜索了以前提出的所有问题,但找不到我想要的。
这里的目的是,给定2 个以二进制形式写入n位的整数,仅使用每个整数的n 位上的逻辑运算(AND、OR、...)来找到其中最大的一个(如果第一个整数,则结果将为 0整数是最大的,否则为 1)。最终,目标是能够绘制一个电子电路,其中 2*n 位将是有或没有张力的电线,并将电线插入将执行逻辑操作的实际电子元件。
我开始思考这个问题,意识到无论发生什么(即无论 n 是什么),2^n 都大于 2^0 + ... + 2^(n-1) (从数学上讲,这很容易提出)。这意味着当另一个整数中的相应位为 0 时,任何一个整数的位(比如数字 k)为 1,并且 n 和 k 之间的所有其他位(k 左侧的所有位)相同,都是最大的。例子 :
A : 010(1)1011 大于 B : 010(0)1111 括号中的有效位。它左边的所有位都是相同的,我们不必关心其他位。
因此,可以对所有位对执行异或(XOR):重要的位会产生 1,然后我可以在 A 的相应位与 XOR 的结果之间执行 NAND,这样它就会产生如果 A 的第 k 位为 1,则为 0,如果 B 的第 k 位为 1,则为 1。唯一的问题是……重要的位右侧的位呢?它们可以不同(因此在执行 XOR 时也会产生 1)但我必须忽略这一点......有什么想法吗?