Алгоритм сравнения двух чисел в двоичной системе(
d
demiurg_ii
..10 раз
:-d
[Сообщение изменено пользователем 28.01.2012 19:37]
:-d
[Сообщение изменено пользователем 28.01.2012 19:37]
М
Мoзгoпрaв и мoзгoвeд©
вычитание реализовать
а ну кыш учить дискретную математику...
A<B или A>B?
собсно вычесть одно из другого если перенос то Б больше а, иначе...
М
Мoзгoпрaв и мoзгoвeд©
10 раз
не так 7 тр не получица
R
Riasoft
уже все понял))
уже все понял))
Там чтобы понять больше или меньше - надо ещё равно отсечь. Ибо перенос означает только больше, а его отсутствие - меньше или равно.
R
Riasoft
уже делаю)
R
Riasoft
http://photo.reborn.ru/?sectionid=496&a=watch&b=or...
Блок сравнения чисел,
если A<B выдает 1 (001)
если A=B выдает 2 (010)
если A>B выдает 4 (100)
вдруг кому интересно
Блок сравнения чисел,
если A<B выдает 1 (001)
если A=B выдает 2 (010)
если A>B выдает 4 (100)
вдруг кому интересно
d
demiurg_ii
1) Знаковый бит так и не попал в признаки результата
2) Это какие такие два числа надо сравнить, чтобы одновременно получить 0 в разности и перенос в признаках?
2) Это какие такие два числа надо сравнить, чтобы одновременно получить 0 в разности и перенос в признаках?
R
Riasoft
я исходил из следующего
если А=B тогда будут все 32разряда превратятся в единицу,
если A<B тогда будет переполнение разрядов,
к сумме А и нот В я не прибавлял единицу,
потом я воспользовался СНДФ, и получил на выходе такое
Условие С1 С2 переход к Х1 Х2 Х3
А<В 0 0 1 0 0
А=B 1 0 0 1 0
A>B 0 1 0 0 1
в общем проверил в анализаторе, все работает
d
demiurg_ii
Ясно. Тогда стоит начать делать версию 2.0 сумматора АЛУ. Есть такая операция "сложение с переносом", которая учитывает состояние признака переноса от предыдущей операции. Очень удобна для сложения многоразрядных чисел и получения сумм длинных рядов.
Соответственно, один из входов сумматора должен быть 33-разрядным, а перенос -- элементом с памятью. :-)
Соответственно, один из входов сумматора должен быть 33-разрядным, а перенос -- элементом с памятью. :-)
R
Riasoft
Ясно. Тогда стоит начать делать версию 2.0 сумматора АЛУ. Есть такая операция "сложение с переносом", которая учитывает состояние признака переноса от предыдущей операции. Очень удобна для сложения многоразрядных чисел и получения сумм длинных
рядов.
если ты внимательно посмотришь на картинку, то увидешь что АЛУ у меня так и реализован,т.е. один из входов его 33битный, просто для реализации блока сравнения на него повешена земля (GND), т.е. логический ноль
d
demiurg_ii
для реализации блока сравнения
всю схему не четал
Я думал, там будет один сумматор и на сложение/вычитание и на сравнение. ИМХО, так будет удобнее делать программки вида
Исходник:CMP AX, DX; сравнение SBC CX, 0; если AX < DX, CX уменьшаем JZ ... |
R
Riasoft
От пользователя: Riasoft
для реализации блока сравнения
всю схему не четал, но осуждаю
Я думал, там будет один сумматор и на сложение/вычитание и на сравнение. ИМХО, так будет удобнее делать программки вида
Исходник:
CMP AX, DX; сравнение
SBC CX, 0; если AX < DX, CX уменьшаем
JZ ...
блок сравнения и вычитатель будет общий, это я сейчас делаю,
потом его попробую объединить с сумматором в АЛУ))
я же не профессионал, мне нужно постепенно все схемы отрабатывать, да это много времени тратиться, НО обучаюсь и двигаюсь к намеченной цели)
Авторизуйтесь, чтобы принять участие в дискуссии.