Механический калькулятор 1950-х годов рушится под давлением задачи деления на ноль — реликвия крутит свои шестерёнки бесконтрольно в “хаотическом цикле” бесконечного движения

деление на ноль,калькулятор,процессор,Intel,4004,8086,WoW,ошибки,аппаратное обеспечение,IEEE 754

Механические калькуляторы и современные CPU: как решалась проблема деления на ноль. От хаоса 1950-х до современных систем защиты. Узнайте, как технологии эволюционировали, чтобы справиться с этой ошибкой!

Деление на ноль – одна из самых известных ошибок в вычислительной технике. Однако даже до цифровой эры вычисления с делением на ноль могли приводить в хаос механические калькуляторы, сталкиваясь с невозможным, или, точнее, с «неопределенной операцией». Яркий пример демонстрирует видеоролик, опубликованный энтузиастом математики и науки Vixhal в X (ранее Twitter). На нём 1950-х годов, технологическое чудо, с бешеной скоростью вращает свои шестерёнки и, по всей видимости, “взывает” о смазке и выключении, после того, как ему приказано погрузиться в математическую бездну.

Знаменитый микропроцессор 4004 Intel, выпущенный в 1971 году, известен тем, что разрабатывался для того, чтобы стать сердцем калькулятора. Однако даже этот чип не имел встроенного оборудования для обработки ошибок деления на ноль. Фактически, в его ограниченном наборе инструкций даже не поддерживалась простая инструкция деления.

Тем не менее, калькулятор Busicom 141-PF, который был первым коммерческим продуктом на базе чипа Intel, включал прошивку для обнаружения деления на ноль и отображения сообщения об ошибке. Это значительно предпочтительный исход по сравнению с аварийным завершением работы, бесконечным циклом вычислений или проявлением других неожиданных сбоев.

Инструкции обработки ошибок деления на ноль на уровне оборудования появились только с выпуска процессора 8086 в 1978 году. Этот знаменитый CPU с архитектурой x86 впервые представил нативную инструкцию DIV, а также генерировал исключение DE (аппаратный ответ) при обнаружении делителя, равного нулю.

Этот шаг Intel в какой-то степени помог защитить приложения для вычислений от ошибок деления на ноль. Однако важным шагом на пути к нейтрализации этих проблем стало появление в 1985 году стандарта IEEE 754, который добавил обработку чисел с плавающей запятой, генерируя Infinity (бесконечность) или NaN (не число) вместо аварийного завершения работы. Это дебютировало в широко используемом оборудовании, начиная с математического сопроцессора Intel 80387.

В 2025 году, хотя современные ядра операционных систем могут перехватывать исключения деления на ноль на аппаратном уровне, предотвращая сбои и неожиданное поведение, некоторые приложения и игры всё ещё могут сталкиваться с проблемами, если разработчики не предвидели такую ситуацию. Сообщения на Reddit и форумах от игроков в World of Warcraft (WoW), датированные всего лишь несколькими месяцами назад, свидетельствуют о том, что в игре до сих пор возникали сбои INT_DIVIDE_BY_ZERO на CPU Raptor Lake/Refresh и в начале 2025 года.

Но если вы столкнулись со сбоем приложения или игры в 2025 году, возможно, вспомните о несчастном механическом калькуляторе 1950-х годов, прежде чем перезагружать компьютер.