Больше, чем оператор в логической логике (логические элементы) - PullRequest
0 голосов
/ 26 февраля 2010

В основном у меня есть 2 беззнаковых 8-битных двоичных числа, и мне нужно использовать булеву логику, чтобы выяснить, какая из них больше, и я не могу понять, с чего начать Использование логических элементов ...

Конечно, я должен проанализировать каждый бит и выяснить, какой из них больше, но как мне собрать все это вместе?

Скажем, у меня были x и y, и я хотел вернуть true, если x

Я думал о поиске, который имеет самый важный бит, но что, если они оба одинаковы?

У кого-нибудь есть идеи?

Ответы [ 4 ]

2 голосов
/ 26 февраля 2010

Я думал о поиске, который имеет самый важный бит, но что, если они оба одинаковы?

Вы переходите от «старшего значащего бита» к «младшему значащему биту», пока не появится разница. Число с первым битом, установленным в «1», является наибольшим.

Чтобы реализовать это, используйте «регистр сдвига» для каждого числа и компаратор для битов «вне» SR.

0 голосов
/ 26 февраля 2010

Если старший бит одного «больше» (то есть: это 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 в зависимости от того, хотите ли вы> или> =.

0 голосов
/ 26 февраля 2010

Действительно, вы на правильном пути. Сначала сравните самый значимый бит. Если они не равны, вы уже можете вывести результат, так или иначе. Если они равны, вы просто выводите результат сравнения старшего бита second . И так до минимально значимого Рекурсия в пути. В результате у вас будет одинаковая конфигурация логических элементов, повторяемых для каждого бита, за исключением последнего, который будет иметь небольшое отклонение (потому что после этого бита больше нет).

0 голосов
/ 26 февраля 2010

Ты часть пути туда. Да, начнем с самого значительного бита. Если они оба одинаковы, переходите к следующему биту (двигаясь вправо, к наименее значимому биту). Когда вы найдете бит, который установлен (а другой нет), это большее число.

...