Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Сравнение чисел   Найти похожие ветки 

 
CyberFreak   (2004-01-08 14:19) [0]

Вопрос ваще не по Delphi, уж извините, но действительно надо ОЧЕНЬ срочно, а более живых форумов в голову чо-то не приходит. Нужен алгоритм сравнения двух ДРОБНЫХ чисел СО ЗНАКОМ в ДОПОЛНИТЕЛЬНОМ коде (числа 4-хразрядные, старший разряд - знаковый). Результат должен выглядеть так: 0-операнды равны, 1-первый операнд меньше второго операнда, 2-первый операнд больше второго операнда. Подскажите хоть в каком направлении думать, или ссылочи подкиньте. Я се уже весь мозг свернул, а ничего дельного не придумывается :(

Заранее благодарен.


 
TUser ©   (2004-01-08 14:24) [1]

Сравниваешь первые разряды - если не получилось - вторые и т.д.
А что значит "в дополнительном коде"?


 
Плохиш_   (2004-01-08 14:24) [2]


> ДРОБНЫХ чисел СО ЗНАКОМ в ДОПОЛНИТЕЛЬНОМ коде

Без понятия что это такое :-(

if x1<x2 then r:= 1
else if x1>x2 then r:=2
else r:=0


 
Ega23 ©   (2004-01-08 14:30) [3]

Я так понимаю, что сущствует что-то вроде собственного типа, например:
TDouble64=record
Double1:Integer;
Double2:Cardinal;
end;

В Double1 определён знак числа и его целая часть, в Doubl2 - всё, что после запятой, так?


 
CyberFreak   (2004-01-08 14:39) [4]

> Ega23

Нет, я же говорю - вопрос ваще не по Delphi. Хотя и на Delphi можно реализовать.

Есть два числа в дополнительном коде. Надо их сравнить, при том, что нам доступны тока логические (поразрядные) операции, т.е. лог. "И", лог. "ИЛИ", инвертирование, сложение по модулю два и т.п.


 
hexone ©   (2004-01-08 14:40) [5]

Сначала по знаку сравниваешь.
1) Соответственно если оба положительные, то они в прямом коде - сравниваешь как 3-х разрядные числа.
2) Если отрицательное хотябы одно получаешь обратный код добавляешь единицу, считаешь, что оно с отрицательным знаком далее пункт 1.


 
CyberFreak   (2004-01-08 14:53) [6]

> hexone

Если 2) то там уже понятно, что они не равны, а какое больше, какое меньше в этом случае, я представляю как определить. Мне не понятно, как именно сравнить остальные разряды, и как быть в случае, если оба числа отрицательные. Т.е. для себя я понимаю, как это происходит, но мне надо процессор спроектировать, соответственно нужна либо какая-нить законченная логическая функция, которая в итоге дает результат, либо что-то типа конструкторского решения на базе микросхем (сумматоры, мультиплексоры, регистры и прочая муть). Ссылкам тоже буду очень рад.


 
CyberFreak   (2004-01-08 15:46) [7]

Понятно... можно уже вешаться


 
raidan ©   (2004-01-08 15:55) [8]

Удалено модератором


 
raidan ©   (2004-01-08 16:02) [9]

Ладно :)))
Скажу приличными словами: сейчас попробую что-нибудь придумать.


 
Ega23 ©   (2004-01-08 16:03) [10]


> raidan © (08.01.04 16:02) [9]

;-))


 
raidan ©   (2004-01-08 16:04) [11]

Если ты проектируешь МП, то вам должны были объяснять, что такое вентили, горизонтальное УУ и переход по условию?


 
Dimman1 ©   (2004-01-08 16:08) [12]

hexone дело говорит:)

Ну а если процессор проектировать, то может, например, использовать сдвиговые регистры для побитового сравнения....

Я когда учился, мы тоже процессор делали :)), да забыл уж все напрочь. Поищи лекции по дискретной математике, булевой алгебре и т.п. :))


 
CyberFreak   (2004-01-08 16:24) [13]

> raidan

Мы пока тока БО проектирум, УУ еще предстоит... с УУ я тоже к вам сюда на форум приду :)

> Dimman1

А ты где учился, если не секрет?


 
Dimman1 ©   (2004-01-08 16:32) [14]

ВГУ, специальность 220100 - Вычислительны машины, комплексы, системы, сети


 
Dimman1 ©   (2004-01-08 16:44) [15]

А вообще то, если ты процессор разрабатываешь, то личше использовать (нарисовать на схеме:)) ALU - "арифметико-логическое устройство", которое всей этой фигней занимается.

(АЛУ <> процессор)


 
uw ©   (2004-01-08 16:57) [16]

Чтобы получить противоположное число в дополнительном коде, нужно проинвертировать все биты и прибавить 1, Ясно, что если теперь сложить два таких числа, то получишь нули во всех разрядах и перенос.

Теперь насчет сравнения. Вычитай одно из другого (или складывай первое с противоположным числом второго) и анализируй знаковый бит и бит преноса. Всего 4 варианта. А равенство и так понятно.


 
raidan ©   (2004-01-08 17:00) [17]

Удалено модератором


 
марсианин   (2004-01-08 21:06) [18]

что значит дробные 4-х разрядные числа? 4-х битные чтоль?

и какие числа: с плавающей или фиксированной запятой? если с фиксированной (ибо не представляю как 4х битное число может быть с плавающей запятой), то про запятую можно совсем забыть, работать как с целыми



Страницы: 1 вся ветка

Текущий архив: 2004.01.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
14-93623
MBo
2004-01-08 17:21
2004.01.29
Поздравляю Sha !


3-93347
raptorus
2004-01-04 13:06
2004.01.29
Есть ли компонент позволяющий выделить несколько значений поля БД


3-93336
Egorka
2003-12-29 06:06
2004.01.29
- проблема с импортированием


1-93448
NewZed
2004-01-15 21:34
2004.01.29
Стиль XP


6-93612
DAnton
2003-11-24 10:34
2004.01.29
<b>Помогите кто чем может с <u>аттачем</u>.</b>