基本上我有2个无符号的8位二进制数,我需要使用布尔逻辑来找出哪个更大,我不能为我的生活弄清楚在哪里开始。使用逻辑门...布尔逻辑(逻辑门)
很明显,我必须分析每一个比特,并找出哪一个更大,但我怎么把它们放在一起?
说我有x和y,并希望返回true,如果x < y(x和y是8位无符号二进制数字)。我会如何去做这件事?
我想过要找出哪个最重要,但如果它们都是一样的呢?
任何人有任何想法?
基本上我有2个无符号的8位二进制数,我需要使用布尔逻辑来找出哪个更大,我不能为我的生活弄清楚在哪里开始。使用逻辑门...布尔逻辑(逻辑门)
很明显,我必须分析每一个比特,并找出哪一个更大,但我怎么把它们放在一起?
说我有x和y,并希望返回true,如果x < y(x和y是8位无符号二进制数字)。我会如何去做这件事?
我想过要找出哪个最重要,但如果它们都是一样的呢?
任何人有任何想法?
你是那里的一部分。是的,从最重要的位开始。如果它们都相同,则移动到下一位(向右移动,朝向最低位)。当你找到一个被设置的位(而另一个不是)时,这是更大的数字。
事实上,你是在正确的轨道上。首先比较最重要的位。如果它们不相等,则可以以某种方式输出结果。如果它们相等,那么您只输出比较第二个最重要位的结果。等到最不重要的位。以某种方式递归。在结果中,每个比特都会有相同的门重复配置,除了最后一个会稍有变化(因为在那之后没有更多的比特)。
如果一个的高位是“较大”(即:它是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。
需要功课标签吗? –