sonycman 0 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба Ну для этого сначала нужно понимать русский языка, в частности различие между единственным (цикл)и множественным числом (циклы). Нерусский учит русскому языку? :) Имхо, не стоит разворачивать циклы, получится мизерная прибавка к скорости, но чувствительно увеличится размер кода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба Нерусский учит русскому языку? :) Многим стоило бы поучиться. Имхо, не стоит разворачивать циклы, получится мизерная прибавка к скорости, но чувствительно увеличится размер кода. Нужно не разворачивать имеющиеся, а не плодить лишние. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба У вас есть что-нибудь для ARM - Cortex? как и для всех других - наиболее часто используется усеченная реализация printf(). Для ARM, кстати, деление и иже с ним, в нем тоже не используются - десятичные числа, в отличии от hex у меня почти всегда немногозначные - на вычитании быстрее. Нерусский учит русскому языку? :) Я с середины шестого класса за границей CCCР в русской школе учился, а учителя там были очень хорошие. После той 'пятерки', особых проблем с грамотностью нет, хотя, конечно, забывается :(. во втором забивал пробелами.... Все делать в первом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба как и для всех других - наиболее часто используется усеченная реализация printf(). Для ARM, кстати, деление и иже с ним, в нем тоже не используются - десятичные числа, в отличии от hex у меня почти всегда немногозначные - на вычитании быстрее. Осталось только выложить его сюда. Я с середины шестого класса за границей CCCР в русской школе учился, а учителя там были очень хорошие. нужно писать "в отличие" Все делать в первом. А "минус" и "плюс" потом занести? Неужто эффективнее? У меня выводится следующим образом: (upd. добавил еще и 0 для полноты) " 0" " -12" "+32767" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба нужно писать "в отличие" Про "отличия" не знаю, а там хорошие. Осталось только выложить его сюда. Это уже мое дело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба Про "отличия" не знаю, а там хорошие. Это у вас синтаксическая ошибка в посте №18 И на этом закончим? Единственное, что я вынес из разговора - надо с указателем повозиться. И к коду aaarrr присмотреться, пока что не понимаю, как работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба Это у вас ошибка в посте №18 Ну это да, предлог 'в отличие' и существительное в предложном падеже с предлогом 'в' :( попутал. Я же говорю - забывается :(. Язык не прост. Не 'C' :), ну и форум не филологический, а "сишный", к счастью. Единственное, что я вынес из разговора - надо с указателем повозиться. А то, что ДВЕ операции деление и взятие остатка от деления замного будет, не вынесли :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба Ну это да, предлог 'в отличие' и существительное в предложном падеже с предлогом 'в' :( попутал. Я же говорю - забывается :( . Язык не прост. Замечу, что я вам на ваши ошибки указал без оскорбительных выражений. Учу на собственном примере. :) А то, что ДВЕ операции деление и взятие остатка от деления замного будет, не вынесли :( О! А как... ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба О! А как... ? Ну, например, как у Genadi. И, если выбирать из двух, то тогда уж оставлять деление, а не остаток он него - много менее громоздко в подавляющем большинстве случаев. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба И к коду aaarrr присмотреться, пока что не понимаю, как работает. Неправильно, кстати, работает для v >= 59074 В качестве отмазки скажу, что таких чисел у меня и не было. Можно, конечно, компенсатор ошибки округления приделать, типа: if(v >= 57074) vi -= 13422, но это уже некрасиво. Зато для знаковых 16-битных чисел исходный вариант годится без всяких допиливаний :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба А то, что ДВЕ операции деление и взятие остатка от деления замного будет, не вынесли :( Хм, но если делать вычитанием, то это будет цикл, а деление нужно сделать только один раз, тем более оно на кортексе аппаратное вроде? Будет быстрее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба Ну, например, как у Genadi. А разве в коде Genadi видно, как у него реализована функция ldiv? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Goodefine 0 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба Когда то для дисплея (отсюда фиксированное число цифр в числе) делал примерно так: //-----------Функция преобразования числа в строку----------// 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]; //переписываем в наш массив } } //==========================================================// Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба Будет быстрее. На 9999999999 типа, да, а вот на 123? Попробуйте. А разве в коде Genadi видно, как у него реализована функция ldiv? Видно, на что он делит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 25 июня, 2010 Опубликовано 25 июня, 2010 · Жалоба Сам написал такое:void si16toad (int16_t Number, char * StrBuf) Алгоритм один в один.. Другого наверно и быть не может. // convert and output decimal value int IntToStrPrint( S32 val ) { U8 c, len = 0; U8 buf[ 10 ]; // max size for text representation of S32 value if (val < 0) { PutChar('-'); val = -val; } do { c = val % 10 + '0'; val /= 10; buf[ len++ ] = c; } while (val != 0); while (len) PutChar(buf[ --len ]); return SUCCESS; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться