Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 13.03.2013, 14:11  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от gary2007 Посмотреть сообщение
Есть 20-ти битное число 1 048 575 ... нужно вывести ... только старшие 4 цифры, но при этом еще и округлить. Для приведенного примера должно высветить 1049.
Я делаю так: делю исходное на 10 без остатка,
Где-то ошибка - если из 1'048'575 нужно получить 1049, то почему делите только на 10?

Сообщение от niXto Посмотреть сообщение
если в результате сдвига выдвигается единица - прибавляй текущую степень двойки к результату.
Если я правильно понял описание, то так получится неверное округление - округлять-то нужно один раз.
Реклама:
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 13.03.2013, 14:38  
gary2007
Почётный гражданин KAZUS.RU
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от tempora Посмотреть сообщение
то почему делите только на 10?
Как иначе получить все цифры массива?
Хорошо, как правильно по вашему?
Исходное число от 0 до максимума.
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Непрочитано 13.03.2013, 14:44  
gary2007
Почётный гражданин KAZUS.RU
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

niXto, я сейчас думаю над тем, что вы написали, но на работе этого не дадут сделать. Только вечером, дома.
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Непрочитано 13.03.2013, 14:51  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от gary2007 Посмотреть сообщение
Исходное число от 0 до максимума.
То есть, если число не превышает 9999, то оно должно выводиться полностью?
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 13.03.2013, 15:01  
gary2007
Почётный гражданин KAZUS.RU
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

да нет же, только старшие 4-е из 7-ми.
9999=0009
с округлением 0010.
Как бы float, но с целым числом.
Я думал получить весь массив, (массивом удобно выводить), а потом пройтись по каждой цифре и округлить, младшие 3-и отбросить.
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Непрочитано 13.03.2013, 15:17  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от gary2007 Посмотреть сообщение
только старшие 4-е из 7-ми
Тогда можно itoa((i+500)/1000) использовать. Это целочисленный вариант выражения "i/1000+0.5", только в нем округление осуществляется до деления.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 13.03.2013, 15:43  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Давайте чуть посчитаем на пальцах. У нас есть 20 битное число N и нам надо отобразить B= (N+500)/1000 - +500 - округление.

Число N - можно представить как А*1024 + R = 1000*A +24*A +R; Где A - старшие 10 бит числа N A=N››10, а R - младшие 10 бит числа N R=N&1023.

Итак B = A + (A*24+R+500)/1000;
Начальное приближение B=A;
A*24= A‹‹3 +A‹‹4 ;
Тогда пусть С= А ‹‹ 3+А ‹‹ 4 +600;

Но как мы знаем, С- можно представить как M*1024+R1.
Тогда B=B+M - второе приближение;
И наконец, если M*24+R1›1000, то B=B+1;

Как видите, никаких умножений и делений - банальные сдвиги и суммирование.
Причем все ложиться в в двухбайтовую арифметику.

Ну а как вывести число от 0 до 1050 на индикатор - это уж детская задача
Boba_spb вне форума  
Непрочитано 13.03.2013, 15:56  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от Boba_spb Посмотреть сообщение
Ну а как вывести число от 0 до 1050 на индикатор - это уж детская задача
А предыдущее - недетская?
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 13.03.2013, 16:09  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Ну предыдущее как то реже встречается;
Boba_spb вне форума  
Непрочитано 13.03.2013, 16:24  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Сообщение от Boba_spb Посмотреть сообщение
как то реже встречается
Позиционная система записи - "реже встречается"? Ну-да, ну-да... начиная с четвертого (кажется) класса, и - каждый день, с утра до вечера. Это, конечно, недостаточно часто.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06


Часовой пояс GMT +4, время: 09:43.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot