|
|
  |
Вопрос С |
|
|
|
Jun 25 2010, 13:28
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (ViKo @ Jun 25 2010, 15:50)  У вас есть что-нибудь для ARM - Cortex? как и для всех других - наиболее часто используется усеченная реализация printf(). Для ARM, кстати, деление и иже с ним, в нем тоже не используются - десятичные числа, в отличии от hex у меня почти всегда немногозначные - на вычитании быстрее. QUOTE (sonycman @ Jun 25 2010, 16:13)  Нерусский учит русскому языку?  Я с середины шестого класса за границей CCCР в русской школе учился, а учителя там были очень хорошие. После той 'пятерки', особых проблем с грамотностью нет, хотя, конечно, забывается  . QUOTE (ViKo @ Jun 25 2010, 16:06)  во втором забивал пробелами.... Все делать в первом.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 25 2010, 13:34
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(zltigo @ Jun 25 2010, 16:28)  как и для всех других - наиболее часто используется усеченная реализация printf(). Для ARM, кстати, деление и иже с ним, в нем тоже не используются - десятичные числа, в отличии от hex у меня почти всегда немногозначные - на вычитании быстрее. Осталось только выложить его сюда. Цитата Я с середины шестого класса за границей CCCР в русской школе учился, а учителя там были очень хорошие. нужно писать "в отличие" Цитата Все делать в первом. А "минус" и "плюс" потом занести? Неужто эффективнее? У меня выводится следующим образом: (upd. добавил еще и 0 для полноты) Код " 0" " -12" "+32767"
|
|
|
|
|
Jun 25 2010, 13:39
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (ViKo @ Jun 25 2010, 16:34)  нужно писать "в отличие" Про "отличия" не знаю, а там хорошие. QUOTE (ViKo @ Jun 25 2010, 16:34)  Осталось только выложить его сюда. Это уже мое дело.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 25 2010, 13:56
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (ViKo @ Jun 25 2010, 16:43)  Это у вас ошибка в посте №18 Ну это да, предлог 'в отличие' и существительное в предложном падеже с предлогом 'в'  попутал. Я же говорю - забывается  . Язык не прост. Не 'C'  , ну и форум не филологический, а "сишный", к счастью. QUOTE (ViKo @ Jun 25 2010, 16:43)  Единственное, что я вынес из разговора - надо с указателем повозиться. А то, что ДВЕ операции деление и взятие остатка от деления замного будет, не вынесли
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 25 2010, 14:10
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (ViKo @ Jun 25 2010, 17:04)  О! А как... ? Ну, например, как у Genadi. И, если выбирать из двух, то тогда уж оставлять деление, а не остаток он него - много менее громоздко в подавляющем большинстве случаев.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 25 2010, 14:49
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(ViKo @ Jun 25 2010, 17:43)  И к коду aaarrr присмотреться, пока что не понимаю, как работает. Неправильно, кстати, работает для v >= 59074  В качестве отмазки скажу, что таких чисел у меня и не было. Можно, конечно, компенсатор ошибки округления приделать, типа: if(v >= 57074) vi -= 13422, но это уже некрасиво. Зато для знаковых 16-битных чисел исходный вариант годится без всяких допиливаний
|
|
|
|
|
Jun 25 2010, 16:19
|

Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581

|
Когда то для дисплея (отсюда фиксированное число цифр в числе) делал примерно так: Код //-----------Функция преобразования числа в строку----------// void decbin_5dgt(uint8_t* x, uchar8* buffer) { uint8_t i; uint8_t buff[DSPL_BUFF_SIZE]; //промежуточный интовый буфер for (i=0; i<DSPL_BUFF_SIZE;i++)buff[i]=0; //зануляем //разлаживаем for (i=*x; i>=10000; i-=10000)buff[0]++; for (i=*x-10000*buff[0]; i>=1000; i-=1000)buff[1]++; for (i=*x-10000*buff[0]-1000*buff[1]; i>=100; i-=100)buff[2]++; for (i=*x-10000*buff[0]-1000*buff[1]-100*buff[2]; i>=10; i-=10)buff[3]++; for (i=*x-10000*buff[0]-1000*buff[1]-100*buff[2]-10*buff[3]; i>=1; i-=1)buff[4]++; for (i=0; i<DSPL_BUFF_SIZE;i++)buffer[i]=(uchar8)buff[i]; //переписываем в наш массив } } //==========================================================//
--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
|
|
|
|
|
Jun 25 2010, 16:30
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (sonycman @ Jun 25 2010, 17:55)  Будет быстрее. На 9999999999 типа, да, а вот на 123? Попробуйте. QUOTE (ViKo @ Jun 25 2010, 19:15)  А разве в коде Genadi видно, как у него реализована функция ldiv? Видно, на что он делит.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|