Делим на 0

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

  1. Всем добрый день! Недавно вспомнил, что где-то слышал о невоенном разгроме эсминца США в 80-е. Помню, что это произошло из за ошибки ЭВМ на этом корабле. Она в результате ошибки поделила на 0. А так как /0 = 999999999999999999999999..... Короче бесконечность. У меня проснулось любопытство - может попробовать провести это на своей ардуино? Но есть и большие опасения - хоть ардуино и китайская, но жалко денег на ветер.
    Меня интересует вопросы:
    1) Есть ли в мк защита от "/0"
    2) Если нет, то сгорит или зависнет?
    3) Если зависнет, можно перепрограммировать нажав кнопку reset при этом?
     
  2. rkit

    rkit Гуру

    Не бесконечность. Делить на ноль просто нельзя в математике. На МК защита есть. В числах с плавающей точкой есть значение NaN, для целых чисел вроде устанавливается специальный регистр, это надо даташит смотреть.
     
  3. Airbus

    Airbus Радиохулиган Модератор

    Про эсминец ИМХО из серии рыбацких баек. На ноль делить нельзя. Но Вы попробуйте и отпишитесь о результатах-пусть результат выводит в порт. Ардуино не сгорит если Вы ничего не замкнёте-зависнет возможно. Перепрограммировать потом да конечно можно для этого плата Ардуино и предназначена.
     
  4. ANV

    ANV Гуру

    В микроконтроллере нет защиты от деления на ноль, тк нет команды деления
     
    Igor68 нравится это.
  5. Хорошо, отпишусь. И ещё: конечно не хочется "умничать", но давайте посмотрим. Конечно я говорю довольно размыто, но начнём. Представим, что числитель - яблоко(и), а знаменатель - человек(люди). 1 человеку в день нужно 1 яблоко. Мы не будем рассматривать что кто-то у кого-то отберёт и т. д. Например 5/1 - 5 дней человеку хватит яблок. А теперь 5/0,5 - Человека "урезали" он будет потреблять в 2 раза меньше яблок за день, ему хватит на 10 дней. Человека можно продолжать урезать до 0. Если 0, то значит людей нет, значит едоков нет - яблоко останется навсегда, его хватит на бесконечность(не рассматриваем гниение, смерть Солнца и распад атомов).
     
  6. Airbus

    Airbus Радиохулиган Модератор

    Так то оно так.Будет вечно ходить и нюхать:)
     
  7. rkit

    rkit Гуру

    Нельзя делением не-нуля достигнуть нуля.
    И через пределы ряд 1/x сходится как к плюс бесконечности, так и к минус бесконечности, в зависимости от того, с какой стороны x прибижается к нулю - с положительной или отрицательной.
    И числа "бесконечность" элементарно не существует, это просто сокращенный способ сказать "число может быть сколь угодно большим".
     
  8. Да да и ещё раз да. Кстати, с ардуинкой ничего не случилось)
     
  9. Airbus

    Airbus Радиохулиган Модератор

    А с числом?
     
    Пушной звер нравится это.
  10. Извините, отвечу завтра, ложусь спать (+ не выводил число в порт, выведу потом)
     
  11. а должно было случится это??
    [​IMG]
     
  12. mcureenab

    mcureenab Гуру

    The binary operator / divides the first operand by the second (after usual arithmetic conversions).

    For integral operands, it yields the algebraic quotient.

    The quotient is rounded in implementation-defined direction. (until C++11)
    The quotient is truncated towards zero (fractional part is discarded). (since C++11)
    If the second operand is zero, the behavior is undefined, except that if floating-point division is taking place and the type supports IEEE floating-point arithmetic (see std::numeric_limits::is_iec559), then:

    • if one operand is NaN, the result is NaN
    • dividing a non-zero number by ±0.0 gives the correctly-signed infinity and FE_DIVBYZERO is raised
    • dividing 0.0 by 0.0 gives NaN and FE_INVALID is raised
     
  13. mcureenab

    mcureenab Гуру

    Возможно... Результат целочисленного деления на 0 не определен!
     
    Рязанский_Ардуинщик нравится это.
  14. Поддерживаю mcureenab(а).
     
  15. ANV

    ANV Гуру

    Можете сколь угодно долго и сильно друг друга поддерживать, но от деления на ноль в CMOSе верхний и нижний ключи одновременно от этого никогда не откроются.
     
  16. Unixon

    Unixon Оракул Модератор

    Это чем его так?

    p.s. Посмотрел первоисточник. Это оказывается специально дохлочип подорвали.
     
    Последнее редактирование: 10 дек 2016
  17. Onkel

    Onkel Гуру

    Позвольте мне и Кантору с вами не согласиться.
     
  18. rkit

    rkit Гуру

    Кантор обозначил бесконечность на числовой прямой? Ну и ну. И где же она?
     
  19. Но человека можно не делить, а просто убрать иль вычесть
     
  20. Onkel

    Onkel Гуру

    Кантора же и читайте. Можно чего попроще, тфкп для техникума можете освежить в памяти, если вы, конечно, не гуманитарий