Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.009 c
7-93712
dron
2003-11-12 12:47
2004.01.29
Как программно создать переменную окружения


1-93575
zioza
2004-01-15 11:03
2004.01.29
ПОДСКАЖИТЕ как создать нестандартную кнопку


9-93321
Unknown user
2003-07-14 19:37
2004.01.29
Параметры перспективы в OpenGL.


1-93567
Nelud
2004-01-16 18:20
2004.01.29
Длинное деление


1-93444
baataars
2004-01-13 17:11
2004.01.29
ООП - вызов родительской функции





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский