реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> целочисленная арифметика
Obi
сообщение Feb 24 2006, 14:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 262
Регистрация: 18-12-05
Из: Perth, WA
Пользователь №: 12 375



Люди, подскажите, пожалуйста, где можно что-нибудь читнуть про целочисленную арифметику. Если можно, что-нибудь по-доступней. wacko.gif


--------------------
"We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard,"
- John F. Kennedy in September 1962.
Go to the top of the page
 
+Quote Post
Arch_Grey
сообщение Feb 27 2006, 10:59
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 7-12-05
Пользователь №: 11 925



Вопрос, конечно, интересный! smile.gif Что-нибудь о Fixed point representation написано в описании АЛУ любого процессора. Применительно к теме форума есть интересная книга "The Scientist and Engineer’s Guide to Digital Signal Processing", где в начале 4-ой главы пару страниц отведено для описания представления целых чисел в цифровом компьютере. Книгу можно скачать тут http://www.dspguide.com.
Go to the top of the page
 
+Quote Post
Obi
сообщение Feb 27 2006, 20:23
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 262
Регистрация: 18-12-05
Из: Perth, WA
Пользователь №: 12 375



Спасибо за ссылку. А вообще, может быть я плохо искал, но мне попадались либо общие слова или научные теоретизмы, слабо связанные с реальным миром. Хотя на руках уменя появилась более-менее подходящая книжка: Р.Грегори, Е.Кришнамурти "Безошибочные вычисления. Методы и приложения", 1988.


--------------------
"We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard,"
- John F. Kennedy in September 1962.
Go to the top of the page
 
+Quote Post
Pathfinder
сообщение Mar 2 2006, 12:40
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 29-06-05
Пользователь №: 6 400



На эту тему классная книжка "Алгоритмические трюки для программистов" не помню чья. Там подробно описаны эффективные реализации основных алгоритмов с использованием целочисленнойц арифметики. Говорят где-то есть в djvu формате.


--------------------
ADC / DAC LC Filter Designer — Удобный инструмент проектирования LC-фильтров для ЦАП и АЦП
Go to the top of the page
 
+Quote Post
Sot
сообщение Mar 8 2006, 12:52
Сообщение #5





Группа: Новичок
Сообщений: 13
Регистрация: 22-09-04
Пользователь №: 696



Генри С. Уоррен, мл.
Алгоритмические трюки для программистов (Hacker's Delight), дополненное издание, 10.88 MB
http://rapidshare.de/files/7745099/WarrenA...m3_pdf.rar.html

или

Генри С. Уоррен, мл.
Алгоритмические трюки для программистов, 2.42 MB
http://rapidshare.de/files/5777980/Algo2Prog.rar.html
Go to the top of the page
 
+Quote Post
AndrewKirs
сообщение May 5 2006, 13:05
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 63
Регистрация: 5-05-06
Пользователь №: 16 804



Obi, а что тебе нужно? Я занимался целочисленной реализацией заведомо FP-алгоритмов. Могу подсказать .
Go to the top of the page
 
+Quote Post
Jools
сообщение May 23 2006, 07:04
Сообщение #7


Патриот
***

Группа: Свой
Сообщений: 384
Регистрация: 26-12-04
Пользователь №: 1 682



Цитата(AndrewKirs @ May 5 2006, 17:05) *
Obi, а что тебе нужно? Я занимался целочисленной реализацией заведомо FP-алгоритмов. Могу подсказать .

Хотелось бы узнать общие действия или рекомендации по переводу FP-алгоритмов в целочисленные. Сейчас тоже подхожу к этому - хотелось бы послушать опытных.

Заранее спасибо.
Go to the top of the page
 
+Quote Post
AndrewKirs
сообщение May 23 2006, 16:47
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 63
Регистрация: 5-05-06
Пользователь №: 16 804



Например, так. FP-число хранится как два integer. Первый содержит целую часть, второй - дробную в целочисленных терминах. Скажем, на нее выделяется 16 бит, из которых старший используется для проверки переполнения. Остается 15 бит (dec=0..32767 или hex=0..7FFF), и числу 0.5 будет соответствовать 3FFF. Налицо некоторая потеря точности, поэтому надо аккуратно смотреть, сколько бит нужно.

Дальше операции ведутся параллельно над целой и дробной частями. То есть сложение двух FP-чисел сведется к сложению отдельно целых и дробных частей. Для дробных надо анализировать старший бит.
Если он равен 1, значит произошло переполнение => увеличиваем на 1 целую часть и обнуляем старший бит дробной.
Go to the top of the page
 
+Quote Post
tag
сообщение Jun 3 2006, 08:42
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 21-02-06
Пользователь №: 14 561



...сейчас под рукой нету, есть такая книга "Программы для микропроцессоров" автор Гутников или Гуртовцев (не помню), там подробно и с примерами описывается целочисленная арифметика, арифметика с фиксированной и плавающей запятой... на примере ещё I8085
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 3 2006, 19:39
Сообщение #10


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Кто-нибудь знает, почему я не могу скачать с rapidshare.de эти файлы?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Oldring
сообщение Jun 4 2006, 08:58
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Jools @ May 23 2006, 11:04) *
Хотелось бы узнать общие действия или рекомендации по переводу FP-алгоритмов в целочисленные.


В Кнуте очень подробно описываются математические основы плавающей арифметики без скидок на слабое знание программистом математики. Если хотите действительно разобраться в тонкостях её реализаций - выбросите все эти книги для чайников прочтите соотвествующие разделы Кнута обязательно, хоть это иногда и непросто из-за чрезмерной любви автора к ассемблеру его любимой абстрактной машины wink.gif


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
AndrewKirs
сообщение Jun 15 2006, 09:41
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 63
Регистрация: 5-05-06
Пользователь №: 16 804



Была такая книга: В.К.Злобин, В.Л.Григорьев Программирование арифметических операций в микропроцессорах, М.,"Высшая школа", 1991, 303 стр.
Возможно сейчас, когда сканируют все подряд, она найдется где-нибудь в электронном виде.
Там описаны процессор 8086/8087, стандарт IEEE-754 и приведены алгоритмы целочисленной реализации операций с плавающей точкой (на ассемблере 8086).

Что касается Кнута, то это, конечно, классик. Но применить высокую теорию в нашей приземленной практике не всегда так уж просто.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 23 2006, 13:59
Сообщение #13


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(AndrewKirs @ May 23 2006, 15:47) *
Например, так. FP-число хранится как два integer. Первый содержит целую часть, второй - дробную в целочисленных терминах. Скажем, на нее выделяется 16 бит, из которых старший используется для проверки переполнения. Остается 15 бит (dec=0..32767 или hex=0..7FFF), и числу 0.5 будет соответствовать 3FFF. Налицо некоторая потеря точности, поэтому надо аккуратно смотреть, сколько бит нужно.

Дальше операции ведутся параллельно над целой и дробной частями. То есть сложение двух FP-чисел сведется к сложению отдельно целых и дробных частей. Для дробных надо анализировать старший бит.
Если он равен 1, значит произошло переполнение => увеличиваем на 1 целую часть и обнуляем старший бит дробной.


Тут вы немного перегнули палку. Сложение двух FixedPoint чисел m.n не сводится к отдельному сложению целых и дробных частей. Достаточно такие числа складывать, как целые числа m+n разрядности. Точка в результате (m+1).n будет на том же самом месте. Все переносы между целыми и дробными частями осуществляются автоматически.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
AndrewKirs
сообщение Jun 28 2006, 09:39
Сообщение #14


Участник
*

Группа: Свой
Сообщений: 63
Регистрация: 5-05-06
Пользователь №: 16 804



Цитата(=GM= @ Jun 23 2006, 17:59) *
Тут вы немного перегнули палку. Сложение двух FixedPoint чисел m.n не сводится к отдельному сложению целых и дробных частей. Достаточно такие числа складывать, как целые числа m+n разрядности. Точка в результате (m+1).n будет на том же самом месте. Все переносы между целыми и дробными частями осуществляются автоматически.

Это я несколько упрощенно написал, т.к.не хотел загромождать деталями. На самом деле, у меня FP-число хранится как два 16-битных WORD. Все это хозяйство реализуется на MMX, и в одном его 64-битном регистре хранится 4 таких вот дробных части, а в другом - 4 целых. Тот же алгоритм (билинейная интерполяция) перенесен на SSE2, там регистр в два раза больше, поэтому влезает по 8 штук.
Соответственно, старший бит используется под проверку переполнения.
Go to the top of the page
 
+Quote Post
_artem_
сообщение Jun 28 2006, 10:43
Сообщение #15


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Помоему эта книжка лучше чем хакерс делайт хотя и бесплатная .

"Algorithms for programmers Ideas and asoruce code "

http://www.jjj.de/fxt/#fxtbook
http://www.jjj.de/fxt/fxtbook.pdf.gz


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 19:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01593 секунд с 7
ELECTRONIX ©2004-2016