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

Вниз

Алгоритм деления   Найти похожие ветки 

 
Skywalker   (2002-06-27 12:13) [0]

Кто-нибудь знает алгоритм деления двоичных чисел??


 
Виктор Щербаков   (2002-06-27 12:15) [1]

Столбиком.


 
Digitman   (2002-06-27 13:04) [2]

а что ты под "двоичным числом" подразумеваешь ?


 
alxx   (2002-06-27 13:09) [3]

101101 | 10
- ------
10 |10110
-----
011
-
10
-----
10
10
-----
01

-----------------------------
101101/10 = 10110 и остаток 1


 
AFROLOV   (2002-06-27 13:56) [4]

Например тот, которому всех учили в школе. Ты его здесь и воспроизвел.


 
Skywalker   (2002-06-27 13:59) [5]

2 alxx> это тож сгодится на будущее :)

но меня интересует как это реализовано машинно...
может кто лазил в дебри ассемблера?


 
AFROLOV   (2002-06-27 14:02) [6]

Или если числа небольшие, то из битовой формы переводим числа a и b в стандартный тип (например Int64). Делим a/b=с - резултат имеет тип Int64= искомому результату деления. Остаток =a-b*c.


 
Digitman   (2002-06-27 14:03) [7]

>Skywalker

Инструкции DIV, IDIV, FDIV и иже с ними.
И что это тебе дает ?


 
Виктор Щербаков   (2002-06-27 14:04) [8]


> может кто лазил в дебри ассемблера?

Дык это в камень надо лезть а не в ассемблер.


 
Skywalker   (2002-06-27 14:08) [9]

2 Dijitman
это связано с моим предыдущем вопросом о функции ldiv в билдере, которая не смотря ни на какие аргументы выдает 32-битный результат...
вот я и хочу реализовать 64-битный аналог этой функции

IDIV надеюсь работает с расширенными регистрами?


 
AFROLOV   (2002-06-27 14:15) [10]

В процерах, помоему, стандартная операция зашитая в железо имеется.


 
Digitman   (2002-06-27 14:46) [11]

Причем здесь расширенные регистры ? Они тоже - 32-разрядные ...
Как и макс.размер операндов инструкций DIV, IDIV ...

А целочисленные 64-разр. мат.операции для CPU, не имеющих соотв.встроенную поддержку, всегда эмулируются программно - иного выхода просто нет.

Посему открываешь файл _ll.asm (станд.поставка Делфи) и изучаешь, как это делается, например, в след.процедурах :

__lldiv (signed longlong division)
__lldivo (signed longlong division with overflow control)

все ж под рукой ! готовое причем ! )

и локализуется - заметь, как и все прочие "непонятности" - пошаговой трассировкой (с использованием окна CPU) простейшего кода :

var
a, b, c: Int64;
...
a:= $20000000000;
b:= $2;
c:= a div b;
showmessage(inttohex(c, 16));



 
Skywalker   (2002-06-28 12:34) [12]

поскольку у меня идет деление на 2 то я сделал все проще
Quat=Num>>1; //это целая часть
Rem=Num-Quat*2 //это остаток


 
oleg_d   (2002-06-29 11:33) [13]

ну если ты о том делении что я думаю, так это существует множество машинных алгоритмов работы с двоичными числами, которые реализованы внутри самих железяк.
А это тебе надо посмотреть материалы по микропрограммированию.
Но сложноватая штука.



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

Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.015 c
4-47910
stainer a
2002-05-10 08:00
2002.07.15
сообщение em_settextex


8-47603
CaspeRForeveR
2002-03-04 14:59
2002.07.15
Подскажите где можно скачать RxRichEdit.????


14-47705
nejest
2002-06-18 22:56
2002.07.15
Где достать книгу Исскуство Программирования Дональда Кнута


14-47669
Андриянов Денис
2002-06-09 19:04
2002.07.15
Есть ли такая библиотека которая делает возмо


14-47773
Erlan
2002-06-13 09:33
2002.07.15
Беда просто.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский