Делим на 0

Тема в разделе "Arduino & Shields", создана пользователем Рязанский_Ардуинщик, 9 дек 2016.

  1. カオナシ

    カオナシ Нерд

    Добавлю:
    Согласен, что вопрос на вопрос что будет - я ответил - как нужно делать.
    Но это примерно так же как более простыми словами сказать, что на вопрос: деление uint32_t на uint32_t и присвоение этого переменной uint8_t можно долго обсуждать диапазоны, но правильней сказать, что переменная присвоения должна быть uint32_t на всем диапазоне...;)
    А потом уже можно накладывать маску. Иначе результат непредсказуем...

    Либо на входе проверять значения. И не допускать некорректных ;)
     
  2. erinaceto

    erinaceto Нуб

    Только не «непредсказуем», а «зависит от реализации». Поэтому я и указал версию и тип компилятора.
     
  3. カオナシ

    カオナシ Нерд

    :) Правильней не доверяться исправлению ошибок компилятором (завтра компилятор может обновиться) и обработкой этих некорректных данных, а самому проверить входные, обрабатываемые данные, и решить, что с ними делать. :)
    Вариантов множество: игнор, сообщение об ошибке, критическая секция и т. д.
     
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    В процессоре нет деления (и умножения). Там аппаратные операции - сдвиги битов состояний в триггерах 8-ми разрядных регистров вправо-влево, аппаратные not-ы, and-ы, or-ы, xor-ы регистров. Математические операции - комбинации этих аппаратных операций, выдаваемые процессору компилятором. Сам процессор не может ничего проверить на входе. И выдаст результат в зависимости от алгоритмов компилятора (нули или единицы во всех разрядах). Но не сгорит - это точно. Скорей всего зациклится на операции сдвига регистра,
     
    Последнее редактирование: 26 апр 2019
  5. parovoZZ

    parovoZZ Гуру

    а как же за пару тактов происходит перемножение двух float 32x32???
     
  6. DetSimen

    DetSimen Спамовредитель Модератор

    это в каком камне так? Хачю такой
     
  7. parovoZZ

    parovoZZ Гуру

    это я так)) образно. У таво же MSP430 на перемножение 16х16 уходит всего 6 тактов.
    А зачем тебе такой?
     
    DetSimen нравится это.
  8. DetSimen

    DetSimen Спамовредитель Модератор

    мне таких даже Дайте две. Хочю пащюпать.
     
  9. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Ч.: Так бойцы ! К нам прибывает радиостанция на бронепоезде.
    П: Василий Иванович, а радиостанция на лампах или на транзисторах ?
    Ч. Повторяю для дураков и тугодумов - на бронепоезде !

    Не может электроника делить и умножать цифры. Только - ноты, оры, ксоры, энды, шифты, клыары. Остальное - алгоритмы. Либо в ОЗУ, либо в микропрограмме ядра (АЛУ).

    ПС. Наглядней всего будет, наверное, - в знаменателе поставить значение из АЦП и покрутить потенциометр на входе. Выскочит по Вотч-догу наверняка. Я смотрел листинги для ПИК- процессора. Там после каждой операции компилятор ставит обнуление Вотч-дога. Вычищение этих (большей части !!!) комманд и перекомпиляция дает нехилую экономию ОЗУ.
    ППС. Во времена DOS, вычистка PUSH, POP после СИ-компилятора давала нехилое увеличение скорости программ.
     
    Последнее редактирование: 26 апр 2019
    Andrey12 нравится это.
  10. カオナシ

    カオナシ Нерд

    :) Интересное утверждение. :) Процессоры то бывают разные.
    Даже у древнего 8086 деление и умножение были.

    mul_div.png
     
  11. parovoZZ

    parovoZZ Гуру

    Я сейчас на ti.com зависаю. Причем очень плотно. Там их много. Много настолько, что косоглазие развиваицо
     
  12. parovoZZ

    parovoZZ Гуру

    А ничего, что аппаратные умножители и делители выведены из состава АЛУ в отдельный блок?
    Вот MSP430
    msp430fr5720 pdf.png
    CPU - отдельно, MPY - отдельно.
     
  13. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Согласен. Математические операции (умножения, деления в том числе) в 8086-м (в его микропрограмме ядра !!!) были. Довольно дохловатые. Потому для него шел дополнительный арифметический сопроцессор Intel 8087.
     
    Последнее редактирование: 26 апр 2019
  14. Ariadna-on-Line

    Ariadna-on-Line Гуру

    А меня на http://www.ti.com и http://ti.com почему-то не пускают. Соединение не устанавливается категорически.
     
  15. DetSimen

    DetSimen Спамовредитель Модератор

    видимо, санкции.
     
  16. Asper Daffy

    Asper Daffy Иксперд

    А, заодно, делала жизнь интереснее и разнообразнее.
     
    DetSimen нравится это.