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

 
 
> Странное выражение.
Jenya7
сообщение Dec 30 2014, 07:19
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Переменные объявлены так.
Код
uint8_t txDelay;
unsigned int delay;

Далее в коде есть такая проверка.
Код
if (delay%txDelay==0)

Что человек хотел проверить делением по модулю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Pasha
сообщение Dec 31 2014, 01:28
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



интересно, сколько индусов читает эту ветку biggrin.gif
Рэбята, ви все под гипнозом? Что это:
Код
if(counter % 100)

?
Код
if(counter >= 100)
{
  counter = 0;
  toggle();
}

где вы видели проц в котором посчитать модуль дешевле чем сравнить?
вот так говнокод и получается.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Dec 31 2014, 07:37
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(_Pasha @ Dec 31 2014, 07:28) *
интересно, сколько индусов читает эту ветку biggrin.gif
Рэбята, ви все под гипнозом? Что это:
Код
if(counter % 100)

?
Код
if(counter >= 100)
{
  counter = 0;
  toggle();
}

где вы видели проц в котором посчитать модуль дешевле чем сравнить?
вот так говнокод и получается.

у нас с ae_ была дискусия о другом топике. надо было отследить изменение третьей цифры справа. скажем было 000199 стало 000200. отсюда модули и прочие навороты.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 31 2014, 16:36
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Jenya7 @ Dec 31 2014, 10:37) *
у нас с ae_ была дискусия о другом топике. надо было отследить изменение третьей цифры справа. скажем было 000199 стало 000200. отсюда модули и прочие навороты.

Там это относится к преобразованию Bin -> BCD - это не вызывает смущения, ибо доказано, что модулями и делениями эффективнее всего выходит,
а в обсуждаемом примере - таймер wacko.gif или счетчик wacko.gif
Ну тогда конечно, если это сфероконь без предупреждения sm.gif - не смею вмешиваться.

Сообщение отредактировал _Pasha - Dec 31 2014, 16:37
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 31 2014, 16:51
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(_Pasha @ Dec 31 2014, 19:36) *
Там это относится к преобразованию Bin -> BCD - это не вызывает смущения, ибо доказано, что модулями и делениями эффективнее всего выходит,


А интересно, где и кем доказано?

Раньше вроде было доказано, что эффективнее (в случае, если у процессора нет аппаратной поддержки деления) всего алгоритм, который по очереди в цикле вычитает сначала по 10000, потом по 1000, потом по 100, ну и т.д., считая каждый раз, сколько было вычитаний на каждом этапе. Так как, деление (в его двоичном исполнении в стандартной либе) всегда имеет столько итераций вычитания, сколько разрядность числа, для каждой цифры (допустим, 16), а в данном случае - делении сразу в десятичном исполнении - на каждую цифру уходит от 1 до 10 итераций вычитания, что по любому меньше. А объем кода, в пересчете на его размер в машинных кодах, плюс-минус копейки, одинаков.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 31 2014, 18:18
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(SM @ Dec 31 2014, 20:51) *
А интересно, где и кем доказано?
А объем кода, в пересчете на его размер в машинных кодах, плюс-минус копейки, одинаков.

Да, и плюс тому деление и остаток могут использоваться еще где-то, а вычитание 10 100 1000- вряд ли.

Сообщение отредактировал _Pasha - Dec 31 2014, 18:19
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 03:38
Рейтинг@Mail.ru


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