Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 166
от 21.11.2005, 13:54

Администратор:Калашников О.А.
В рассылке:Подписчиков: 252, Экспертов: 26
В номере:Вопросов: 1, Ответов: 2


Вопрос № 29599: Немного странный вопрос по поводу функции MulDiv. Я хотел бы узнать каково её практическое применение. Не понятно почему она выделена под отдельную функцию. Или может быть я не правильно понял её. Расскажите пожалуйста(желательно всё ...

Вопрос № 29.599
Немного странный вопрос по поводу функции MulDiv.
Я хотел бы узнать каково её практическое применение.
Не понятно почему она выделена под отдельную функцию.
Или может быть я не правильно понял её.
Расскажите пожалуйста(желательно всё таки практическое применение).
Заранее благодарю за столь странный вопрос.
Отправлен: 15.11.2005, 13:59
Вопрос задал: Чурсанов Евгений Ильич (статус: 6-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Чурсанов Евгений Ильич!
А вот когда надо два числа умножить и разделить на третье, и применяй :)
Видать, программисты с MS посчитали необходимым выделить это операцию в отдельную функцию. Скорее всего, для компактности исходного кода.
Не нравится - не применяй :)


---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: 9-ый класс)
Отправлен: 15.11.2005, 14:53

Отвечает: Bob Johnson
Здравствуйте, Чурсанов Евгений Ильич!
Для человека, пишущего на асме на первый взгляд эта функция - бред. Зачем действительно ее выделять? На самом деле ответ прост - когда ты пишешь на си, то результат умножения двух 32-х разрядных чисел тоже является 32-х разрядным (хотя процессор выдает 64-х разрядный результат, но старшые 32 бита просто игнорируются). Иногда бывает задача умножить 32-х разрядное число на другое, а затем поделить на 3-е, и ты знаешь, что результат тоже будет 32-х разрядный. Например, ты делаешь прогрессбар копирования файла - ты берешь количество скопированных байт, умножаешь на 100 и делишь на длину файла. При этом результат умножения вполне может выходить за пределы 32-х разрядов (допустим, файл 1 Гб (вообще, с файлами надо работать 64-х битной арифметикой, но представим, что мы на fat32)). Делить же количество скопированных байт на длину файла, а затем умножать на 100 бесполезно - будем получать либо 0, либо сразу 100 (арифметика целочисленная). вот тут программисту на си и приходит на помо щь функция MulDiv. Можно, конечно, сделать это асмовой вставкой, но чтобы не нарушать общую эстетику программы, лучше вызывать эту функцию.
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 15.11.2005, 23:40


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.winapifaq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное