Найти тему

Как найти машинный ноль

Оглавление

Эту задачу не часто спрашивают на собеседованиях, но знать человеку технической специальности об этом желательно, чтобы при случае поддержать высокоинтеллектуальный разговор.

самооценка, после того как нашёл машинный ноль
самооценка, после того как нашёл машинный ноль

О чём речь

С точки зрения математики, на любом отрезке находится бесконечное количество рациональных чисел, так как они располагаются всюду плотно (математический термин) на числовой оси. На любом компьютере, ввиду физических ограничений окружающего нас мира и особенностей конструкции вычислительной техники, есть ограничение на возможность представления всех этих чисел. Существует некая граница, все числа меньше которой, для машины неотличимы от 0 - это и есть машинный ноль.

числа тут для примера, у всех разные значения
числа тут для примера, у всех разные значения

Зачем его искать

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

Реализация

В интернете можно найти элегантные решения данной задачи, для данной статьи я же напишу такое, которое делал во времена своего студенчества. Просто делим число на 2 до того момента, пока оно не станет равно нулю.

элементарная реализация на Python приблизительного поиска машинного нуля
элементарная реализация на Python приблизительного поиска машинного нуля

Если смутило найденное число

Возможно раньше с этим не сталкивались, но число обычно настолько маленькое, что возвращается оно в форме экспоненциальной записи, которая как раз и придумана для записи как очень больших, так и очень маленьких числа. Результат, полученный в нашем эксперименте, можно представить как "5 умножить на 10 в минус 324 степени".

Вот в общем-то и все, как Вы успели убедиться, задача на поиск машинного нуля совсем не сложная.