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

 
 
> целочисленная арифметика
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
 
Start new topic
Ответов
AndrewKirs
сообщение May 5 2006, 13:05
Сообщение #2


Участник
*

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



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


Патриот
***

Группа: Свой
Сообщений: 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
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 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
=GM=
сообщение Jun 23 2006, 13:59
Сообщение #5


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
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 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

Сообщений в этой теме
- Obi   целочисленная арифметика   Feb 24 2006, 14:02
- - Arch_Grey   Вопрос, конечно, интересный! Что-нибудь о Fi...   Feb 27 2006, 10:59
- - Obi   Спасибо за ссылку. А вообще, может быть я плохо ис...   Feb 27 2006, 20:23
- - Pathfinder   На эту тему классная книжка "Алгоритмические ...   Mar 2 2006, 12:40
- - Sot   Генри С. Уоррен, мл. Алгоритмические трюки для про...   Mar 8 2006, 12:52
|- - Oldring   Цитата(Jools @ May 23 2006, 11:04) Хотело...   Jun 4 2006, 08:58
- - tag   ...сейчас под рукой нету, есть такая книга "П...   Jun 3 2006, 08:42
- - GetSmart   Кто-нибудь знает, почему я не могу скачать с rapi...   Jun 3 2006, 19:39
- - AndrewKirs   Была такая книга: В.К.Злобин, В.Л.Григорьев Програ...   Jun 15 2006, 09:41
- - _artem_   Помоему эта книжка лучше чем хакерс делайт хотя и ...   Jun 28 2006, 10:43
- - AndrewKirs   Хорошая книжка, только недописанная (draft).   Jun 28 2006, 12:15


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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 21:33
Рейтинг@Mail.ru


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