АвторСообщение



Пост N: 19
Зарегистрирован: 25.11.09
Откуда: Украина, Днепропетровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.10 21:27. Заголовок: Арифметические операции над числами с плавающей запятой




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 14 [только новые]





Пост N: 20
Зарегистрирован: 25.11.09
Откуда: Украина, Днепропетровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.10 21:29. Заголовок: Хотелось бы узнать к..


Хотелось бы узнать как производить вычисления над такими числами. Пока даже представления не имею........

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1224
Зарегистрирован: 26.12.06
Откуда: Россия, Архангельск
Рейтинг: 3
Фото:
ссылка на сообщение  Отправлено: 08.04.10 02:01. Заголовок: Точно так же как и в..


Точно так же как и в десятичной системе... Надо изучить формат представления этих чисел и все будет понятно.

Еще неизвестно, что хуже: постоянный бардак или непостоянный порядок? Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 11
Зарегистрирован: 15.03.11
Рейтинг: 1
ссылка на сообщение  Отправлено: 14.01.12 18:14. Заголовок: Алексей пишет: Точн..


Алексей пишет:

 цитата:
Точно так же как и в десятичной системе... Надо изучить формат представления этих чисел и все будет понятно.


Не могли бы Вы дать ссылки, где было бы подробнее описаны процедуры работы с числами с плавающей точкой. Хочу разобраться на примере (AN526) , перерыл интернет, ничего толкового не нашел, как преобразовать и как выглядит в десятичной системе этот пример:

;******************************************************************* 
; Test Program
;*******************************************************************
; Load constant values to (ACCa, EXPa) & (ACCb, EXPb) for testing
;
loadAB movlw 1
movwf ACCaHI
movlw 0FF ; loads ACCa = 01FF EXP(4)
movwf ACCaLO
movlw 04
movwf EXPa
;
movlw 07F
movwf ACCbHI
movlw 0FF ; loads ACCb = 7FFF EXP(6)
movwf ACCbLO
movlw 06
movwf EXPb
retlw 0
;
main nop
;
call loadAB ; result of adding ACCb(EXPb)+ACCa(EXPa)->ACCb(EXPb)
call F_add ; Here Accb = 403F, EXPb = 07
;
call loadAB ; result of subtracting ACCb(EXPb)-ACCa(EXPa)->ACCb(EXPb)
call F_sub ; Here Accb = 7F7F, EXPb = 06
;
call loadAB ; result of multiplying ACCb(EXPb) * ACCa(EXPa)->ACCb(EXPb)
call F_mpy ; Here ACCb = FF7E, EXPb = 12
;
call loadAB ; result of dividing ACCb(EXPb) / ACCa(EXPa)->ACCb(EXPb) with
call F_div ; remainder in ACCc. Here ACCb =4000, EXPb = FA (same as -6)
; ; & the remainder ACCc = 003F
;
self goto self


Было бы интересно узнать, пытался ли кто разобрать исходник FLC метра http://www.cqham.ru/lcmeter3.htm
и смог бы доходчиво объяснить, каким макаром работать с библиотекой (Float) представленной в этом коде?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 459
Зарегистрирован: 01.03.11
Рейтинг: 2
ссылка на сообщение  Отправлено: 14.01.12 22:21. Заголовок: На сколько помню, я ..


На сколько помню, я спрашивал автора. Автор переделал, упростил библиотеку под свои нужды. Очень просто просмотреть в MPLAB, как она работает. В исходнике она функционально отделена, как "32-х битная библитека с плавающей точкой".
Вот могу предложить, несколько моих статей. Как объяснение и мои собственные разборки с плавающей запятой. Может поможет. Давно это было. http://zalil.ru/32497458 И во многом наивно.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 12
Зарегистрирован: 15.03.11
Рейтинг: 1
ссылка на сообщение  Отправлено: 15.01.12 05:45. Заголовок: Спасибо MAZ очень ..


Спасибо MAZ , хорошо написано. Наконец то разобрался более менее что к чему.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 461
Зарегистрирован: 01.03.11
Рейтинг: 2
ссылка на сообщение  Отправлено: 15.01.12 07:13. Заголовок: На здоровье. Рад что..


На здоровье. Рад что пригодилось. Лично я, чем больше разбирался отошел от такой формы. Там и накопление ошибки, и сложные вычисления и преобразования. Проще с фиксированной запятой для большинства случаев с которыми сталкиваюсь.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 13
Зарегистрирован: 15.03.11
Рейтинг: 1
ссылка на сообщение  Отправлено: 15.01.12 11:19. Заголовок: Уважаемый MAZ прост..



Уважаемый MAZ простите за наглость, не могли бы Вы помочь мне привести к десятичному виду данный пример, прикидывал и так и эдак, запутался вообще.

7FFF EXP(6) + 01FF EXP(4) = 403F EXPb = 07
7FFF EXP(6) - 01FF EXP(4) = 7F7F EXPb = 06
7FFF EXP(6) * 01FF EXP(4) = FF7E, EXPb = 126
7FFF EXP(6) / 01FF EXP(4) = 4000, EXPb = FA (same as -6)

Спасибо.


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 462
Зарегистрирован: 01.03.11
Рейтинг: 2
ссылка на сообщение  Отправлено: 15.01.12 12:54. Заголовок: Спасибо за веселые в..


Спасибо за веселые выходные! Сейчас будем вспоминать

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 14
Зарегистрирован: 15.03.11
Рейтинг: 1
ссылка на сообщение  Отправлено: 15.01.12 13:17. Заголовок: MAZ пишет: Спасибо ..


MAZ пишет:

 цитата:
Спасибо за веселые выходные! Сейчас будем вспоминать


MAZ sorry, если че, то мне не так уж и к спеху, спасибо.

Вот этот апноут AN256, никак не могу в нем разбратся, в часности с библиотекой Float, думаю многим будет полезно, если мы этот вопрос сейчас растолкуем.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 464
Зарегистрирован: 01.03.11
Рейтинг: 2
ссылка на сообщение  Отправлено: 15.01.12 20:53. Заголовок: Честно говоря не пон..


Честно говоря не понимаю эту запись. Число приблизительно можно расписать, но тогда не совпадают вычисления.
Вы откуда её взяли? Первоисточник.
Спрашивал у других, тоже мнение, не понятно.
AN256, AN526 Посмотрите вот это. По этим библиотекам Александр Буевский и делал, на сколько помню, свой LCF.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 15
Зарегистрирован: 15.03.11
Рейтинг: 1
ссылка на сообщение  Отправлено: 16.01.12 12:40. Заголовок: MAZ пишет: Вы откуд..


MAZ пишет:

 цитата:
Вы откуда её взяли? Первоисточник.


AN 526, вот тут можно все посмотреть http://zalil.ru/32507984, этот пример находитcя в файле float.asm
MAZ Спасибо, буду разбираться.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 16
Зарегистрирован: 15.03.11
Рейтинг: 1
ссылка на сообщение  Отправлено: 16.01.12 16:35. Заголовок: Вот: "Rimsky: Ше..


Вот:
"Rimsky: Шестнадцатиричное число перед EXP - мантисса. Преобразуете его в десятичный формат. И умножаете на двойку в степени, которая указана в скобках после EXP. Все, получаете десятичный формат."
Что мне ответили на КОТе.


7FFF (EXP =6)+01FF(EXP=4)=403F(EXP=7)
(32767*2^6) + (511*2^4) = (16447*2^7)

Вроде все верно :)

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 465
Зарегистрирован: 01.03.11
Рейтинг: 2
ссылка на сообщение  Отправлено: 16.01.12 19:34. Заголовок: 2^6 я не додумался. ..



Rimsky пишет:

 цитата:
7FFF EXP(6) + 01FF EXP(4) = 403F EXPb = 07



Rimsky пишет:

 цитата:
7FFF (EXP =6)+01FF(EXP=4)=403F(EXP=7)



Все таки записи не корректные. По первой записи. можно понять что результат суммы =7 И думаешь, что где то ошибся с переводом. Тем более давно все благополучно забыл.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 156
Зарегистрирован: 01.03.11
Рейтинг: 2
ссылка на сообщение  Отправлено: 16.01.12 20:21. Заголовок: MAZ пишет: По перво..


MAZ пишет:

 цитата:
По первой записи. можно понять что результат суммы =7

Я тоже так понял...

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 2
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия