реклама на сайте
подробности

 
 
8 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Вопрос С
sonycman
сообщение Jun 25 2010, 13:13
Сообщение #16


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(zltigo @ Jun 25 2010, 16:57) *
Ну для этого сначала нужно понимать русский языка, в частности различие между единственным (цикл)и множественным числом (циклы).

Нерусский учит русскому языку? smile.gif

Имхо, не стоит разворачивать циклы, получится мизерная прибавка к скорости, но чувствительно увеличится размер кода.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 25 2010, 13:14
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sonycman @ Jun 25 2010, 17:13) *
Нерусский учит русскому языку? smile.gif

Многим стоило бы поучиться.

Цитата(sonycman @ Jun 25 2010, 17:13) *
Имхо, не стоит разворачивать циклы, получится мизерная прибавка к скорости, но чувствительно увеличится размер кода.

Нужно не разворачивать имеющиеся, а не плодить лишние.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 25 2010, 13:28
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 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) *
Нерусский учит русскому языку? smile.gif

Я с середины шестого класса за границей CCCР в русской школе учился, а учителя там были очень хорошие. После той 'пятерки', особых проблем с грамотностью нет, хотя, конечно, забывается sad.gif.
QUOTE (ViKo @ Jun 25 2010, 16:06) *
во втором забивал пробелами....

Все делать в первом.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 25 2010, 13:34
Сообщение #19


Универсальный солдатик
******

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



Цитата(zltigo @ Jun 25 2010, 16:28) *
как и для всех других - наиболее часто используется усеченная реализация printf(). Для ARM, кстати, деление и иже с ним, в нем тоже не используются - десятичные числа, в отличии от hex у меня почти всегда немногозначные - на вычитании быстрее.

Осталось только выложить его сюда.
Цитата
Я с середины шестого класса за границей CCCР в русской школе учился, а учителя там были очень хорошие.

нужно писать "в отличие"
Цитата
Все делать в первом.

А "минус" и "плюс" потом занести? Неужто эффективнее?
У меня выводится следующим образом:
(upd. добавил еще и 0 для полноты)
Код
"     0"
"   -12"
"+32767"
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 25 2010, 13:39
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 25 2010, 13:43
Сообщение #21


Универсальный солдатик
******

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



Цитата(zltigo @ Jun 25 2010, 16:39) *
Про "отличия" не знаю, а там хорошие.

Это у вас синтаксическая ошибка в посте №18

И на этом закончим? Единственное, что я вынес из разговора - надо с указателем повозиться. И к коду aaarrr присмотреться, пока что не понимаю, как работает.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 25 2010, 13:56
Сообщение #22


Гуру
******

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



QUOTE (ViKo @ Jun 25 2010, 16:43) *
Это у вас ошибка в посте №18

Ну это да, предлог 'в отличие' и существительное в предложном падеже с предлогом 'в' sad.gif попутал. Я же говорю - забывается sad.gif. Язык не прост. Не 'C' smile.gif, ну и форум не филологический, а "сишный", к счастью.
QUOTE (ViKo @ Jun 25 2010, 16:43) *
Единственное, что я вынес из разговора - надо с указателем повозиться.

А то, что ДВЕ операции деление и взятие остатка от деления замного будет, не вынесли sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 25 2010, 14:04
Сообщение #23


Универсальный солдатик
******

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



Цитата(zltigo @ Jun 25 2010, 16:56) *
Ну это да, предлог 'в отличие' и существительное в предложном падеже с предлогом 'в' sad.gif попутал. Я же говорю - забывается sad.gif . Язык не прост.

Замечу, что я вам на ваши ошибки указал без оскорбительных выражений.
Учу на собственном примере. smile.gif

Цитата(zltigo @ Jun 25 2010, 16:56) *
А то, что ДВЕ операции деление и взятие остатка от деления замного будет, не вынесли sad.gif

О! А как... ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 25 2010, 14:10
Сообщение #24


Гуру
******

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



QUOTE (ViKo @ Jun 25 2010, 17:04) *
О! А как... ?

Ну, например, как у Genadi. И, если выбирать из двух, то тогда уж оставлять деление, а не остаток он него - много менее громоздко в подавляющем большинстве случаев.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 25 2010, 14:49
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ViKo @ Jun 25 2010, 17:43) *
И к коду aaarrr присмотреться, пока что не понимаю, как работает.

Неправильно, кстати, работает для v >= 59074 biggrin.gif
В качестве отмазки скажу, что таких чисел у меня и не было.

Можно, конечно, компенсатор ошибки округления приделать, типа: if(v >= 57074) vi -= 13422, но это уже некрасиво. Зато для знаковых 16-битных чисел исходный вариант годится без всяких допиливаний smile.gif
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 25 2010, 14:55
Сообщение #26


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(zltigo @ Jun 25 2010, 17:56) *
А то, что ДВЕ операции деление и взятие остатка от деления замного будет, не вынесли sad.gif

Хм, но если делать вычитанием, то это будет цикл, а деление нужно сделать только один раз, тем более оно на кортексе аппаратное вроде?
Будет быстрее.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 25 2010, 16:15
Сообщение #27


Универсальный солдатик
******

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



Цитата(zltigo @ Jun 25 2010, 17:10) *
Ну, например, как у Genadi.

А разве в коде Genadi видно, как у него реализована функция ldiv?
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Jun 25 2010, 16:19
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 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]; //переписываем в наш массив                                                }
      
}
//==========================================================//



--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 25 2010, 16:30
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 25 2010, 16:48
Сообщение #30


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ViKo @ Jun 25 2010, 14:29) *
Сам написал такое: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;
}
Go to the top of the page
 
+Quote Post

8 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01522 секунд с 7
ELECTRONIX ©2004-2016