Деление на 100 с сдвигом регистра

Тема в разделе "Микроконтроллеры AVR", создана пользователем Yerabdi, 8 апр 2024.

  1. Asper Daffy

    Asper Daffy Иксперд

    Там целочисленное деление. А уможают на хитрые вещи, см. ссылку в #12
     
  2. Asper Daffy

    Asper Daffy Иксперд

    В простых случаях (деление на степень двойки) так и есть - разберётся.
     
  3. b707

    b707 Гуру

    и что, это реально - на столь простом примере как у ТС получить выигрыш в пять раз? Или это у него какая-то ошибка в программе?
     
  4. Asper Daffy

    Asper Daffy Иксперд

    Не знаю, плотно не разбирался. Тем более полных примеров нет, а додумывать за него, так я может ту же ошибку ненароком и исправлю, тогда "за что боролись?".
     
  5. fps

    fps Нерд

    Просто у него там есть ограничения по точности и по диапазону значений:
    1. считает, как уже заметили, не совсем точно, т.к. 65500 != 65536
    2. работает только с числами, которые в 655 раз меньше чем uint32, иначе будет переполнение.
     
    Yerabdi нравится это.
  6. b707

    b707 Гуру

    да причем тут это? Я ведь не об этом спрашивал.

    Вопрос был - реально ли есть контроллеры, у которых такая разница в вычислении
    a=(b*c)/100 занимает ~40-45 мкс
    а=((b*c)*655)>>16; занимает ~ 8-9мкс

    просто автор известный путаник и ему особой веры нет, он легко мог такой код написать, что у него вычисление и несколько секунд заняло бы :)
     
  7. parovoZZ

    parovoZZ Гуру

    а что тебя смущает? Умножение происходит на аппаратном умножителе за два такта, сдвиг вправо происходит в алу тоже за какие-то там такты. А вот софтовое деление - это целый алгоритм...
     
    Yerabdi нравится это.
  8. parovoZZ

    parovoZZ Гуру

    в микрочип студио в режиме симуляции можешь самостоятельно посмотреть. Счётчик тактов там есть. Период вычисления по ним посчитаешь. Потом нам доложишь.
     
    Yerabdi нравится это.
  9. b707

    b707 Гуру

    я не пишу в студии... мозгов не хватает
     
  10. Yerabdi

    Yerabdi Гик

    Вы правы
     
  11. parovoZZ

    parovoZZ Гуру

    Так на умножителе одна сотка умножится или нет?