Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

IAR Embedded Workbench

Непрочитано 13.03.2013, 14:11  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 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.RUN
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,440
Сказал спасибо: 375
Сказали Спасибо 1,052 раз(а) в 621 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

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

niXto, я сейчас думаю над тем, что вы написали, но на работе этого не дадут сделать. Только вечером, дома.
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Непрочитано 13.03.2013, 14:51  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 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.RUN
 
Аватар для gary2007
 
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,440
Сказал спасибо: 375
Сказали Спасибо 1,052 раз(а) в 621 сообщении(ях)
gary2007 на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

да нет же, только старшие 4-е из 7-ми.
9999=0009
с округлением 0010.
Как бы float, но с целым числом.
Я думал получить весь массив, (массивом удобно выводить), а потом пройтись по каждой цифре и округлить, младшие 3-и отбросить.
__________________
Мелочи не решают главного. Они решают всё!
gary2007 вне форума  
Непрочитано 13.03.2013, 15:17  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 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.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 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.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 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.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: IAR Embedded Workbench

Ну предыдущее как то реже встречается;
Boba_spb вне форума  
Непрочитано 13.03.2013, 16:24  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 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, время: 05:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.