Задать вопрос
@blessmemary

Теоретически, что будет если дать процессору инструкцию поделить на ноль без механизмов обработки?

Пусть не будет никаких ограничений, и процессор попытается поделить любое целое число на ноль, что будет происходить на низком уровне?
  • Вопрос задан
  • 396 просмотров
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Математика для анализа данных
    6 месяцев
    Далее
  • karpov.courses
    Математика для Data Science
    1 месяц
    Далее
  • Фоксфорд
    Алгоритмика и основы написания кода. 3–5 классы. (в записи)
    1 месяц
    Далее
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Ну для floating point чисел ничего интересного не происходит. Результат будет - бесконечность (Inf).
И эта бесконечность - это вполне себе реальная константа для таких чисел.
Ответ написан
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Зависит от того, как именно реализовано деление на схеме.

Можно было бы предположить, что оно повиснет, как при делении на 0 на механическом калькуляторе. Хоть это и прикольно выглядит.

Но процессор не вычитает кучу раз подряд, ведь там двоичная система счисления. Разряд вычисляется проверкой на переполнение при одном вычитании со сдвигом, а результат идет дальше. Вот лекция о том, как устроена схема делителя.

При вычитании нуля со сдвигом там никогда переполнения быть не будет, поэтому все биты ответа получатся равными 1.

В итоге оно скорее всего выдаст неправильный результат. Что-то вроде 2^31-1 для любого делимого.

Правда, если Intel/Amd/etc. нагородили каких-то оптимизаций или как-то усложнили схему, то результат может быть другим.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы