На Горох
Информатика, 11 класс

§ 25. Особенности компьютерной арифметики

"Информатика (базовый и углублённый уровень)", Гейн А.Г., Сенокосов А.И.

Объяснение темы В оглавлении: § 25. Особенности компьютерной арифметики

Кратко о теме

Компьютерная арифметика описывает, как числа хранятся и обрабатываются в памяти компьютера. Поскольку для записи отводится конечное число разрядов, многие дроби представляются приближённо, а ошибки округления могут влиять на результат вычислений. Формат с плавающей запятой позволяет хранить числа разных масштабов, но не устраняет погрешность и имеет ограниченный диапазон. Понимание этих особенностей помогает правильно сравнивать результаты, замечать потерю точности и отличать её от переполнения.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

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

Число с плавающей запятой — представление числа с помощью знака, значащей части и порядка. Значащая часть содержит сохраняемые цифры, а порядок задаёт масштаб: например, 1,25 × 10³ равно 1250. Положение запятой как будто перемещается в зависимости от порядка, отсюда название формата. Такой способ позволяет в одном формате хранить и очень большие, и очень малые числа.

Погрешность округления — отличие сохранённого или вычисленного приближённого значения от точного. Она появляется, когда разрядов не хватает и лишние цифры приходится округлить или отбросить. Например, число 1,234 при хранении только трёх значащих цифр можно заменить на 1,23. Понятие погрешности нужно, чтобы оценивать, насколько результат пригоден для задачи.

Переполнение — ситуация, когда результат выходит за пределы диапазона значений, представимых в выбранном формате. В таком случае обычное представление результата невозможно. Это не то же самое, что небольшое расхождение из-за округления: переполнение связано с границами диапазона. Его учитывают, выбирая подходящий формат и проверяя вычисления.

Как это устроено

Память компьютера конечна, поэтому для числа выделяется лишь определённое количество разрядов. В позиционной записи значение дроби зависит от бесконечной последовательности разрядов, но компьютер способен сохранить только конечную часть. Например, в двоичной системе 0,1 записывается бесконечной периодической дробью: 0,0001100110011…₂. Когда такой записи отводят ограниченное число разрядов, её обрезают или округляют, и сохранённое значение становится приближённым.

В числе с плавающей запятой знак указывает, положительное число или отрицательное, значащая часть хранит его цифры, а порядок определяет, насколько велико или мало число. Например, запись 3,2 × 10⁵ позволяет представить крупное значение без хранения всех нулей в значащей части. Изменяя порядок, формат охватывает числа разных масштабов — от очень малых до очень больших. При этом число разрядов для значащей части ограничено, поэтому широкий диапазон не означает бесконечной точности.

Округление или усечение возникает при переводе числа в формат с ограниченной значащей частью, а также при арифметических операциях. При округлении учитывают отброшенные цифры, а при усечении просто удаляют их; в обоих случаях результат может отличаться от точного. Следующая операция получает уже приближённое значение, поэтому её собственное округление добавляется к предыдущей погрешности. Так ошибка способна накапливаться в длинной цепочке вычислений, хотя каждый отдельный шаг кажется точным.

Сложение чисел сильно разного масштаба может скрыть малое слагаемое: если его значащие разряды не помещаются рядом с разрядами большого числа, при округлении они теряются. Например, при ограниченной точности сумма 1 000 000 и 0,01 может сохраниться как 1 000 000. При вычитании близких чисел возникает другая трудность: значащие цифры совпадают и сокращаются, оставляя мало точных разрядов. Повторение таких операций или дальнейшее использование неточного результата может заметно усилить влияние погрешности.

Погрешность округления и переполнение описывают разные ограничения компьютерной арифметики. При округлении число помещается в диапазон, но хранится приближённо; например, 0,1 заменяется близким двоичным значением. При переполнении результат оказывается за границей диапазона и не может быть представлено в выбранном формате обычным образом. Поэтому небольшое отличие результата от ожидаемого проверяют как возможную погрешность, а слишком большой результат — как риск переполнения.

Причины и проявления неточности компьютерных вычислений

СитуацияПричинаЧто происходит с результатомКак учитывать
Представление дробного числаДробь имеет бесконечную двоичную запись или не укладывается в доступные разряды.В памяти хранится ближайшее приближённое значение.Учитывать точность формата и не ожидать точного равенства.
Округление или усечениеДля записи или результата операции не хватает разрядов.Значение отличается от точного; округление может влиять на следующий шаг.Оценивать допустимую погрешность и точность промежуточных вычислений.
Накопление погрешностиВ цепочке операций каждый шаг использует приближённые значения.Отклонение итогового результата может увеличиваться.Проверять чувствительность вычислений и контролировать промежуточные результаты.
Вычитание близких чиселСовпадающие значащие разряды сокращаются.В результате остаётся меньше точных значащих разрядов.По возможности выбирать более устойчивый способ вычисления.
ПереполнениеРезультат выходит за диапазон формата.Обычное представление результата становится невозможным.Проверять диапазон и при необходимости выбирать другой формат или порядок вычислений.

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

Разбор задач

Представить десятичную дробь 0,1 в двоичной системе и объяснить, почему её компьютерная запись может быть приближённой

  1. Для перевода дробной части в двоичную систему последовательно умножаем её на 2 и записываем целые части произведений. Для 0,1 получаем: 0,1 × 2 = 0,2 (0); 0,2 × 2 = 0,4 (0); 0,4 × 2 = 0,8 (0).
  2. Продолжаем: 0,8 × 2 = 1,6 (1), остаток 0,6; 0,6 × 2 = 1,2 (1), остаток 0,2. Остаток 0,2 повторился, значит, дальше будут повторяться и цифры 0011.
  3. Запись получается бесконечной: 0,1₁₀ = 0,0001100110011…₂. Конечный формат не может сохранить все разряды, поэтому компьютер хранит округлённую или усечённую запись.

Ответ: двоичная запись 0,1 бесконечна и периодична, поэтому в формате с конечным числом разрядов число обычно представляется приближённо.

Вычислить в машинной арифметике выражение (0,1 + 0,2) − 0,3 и сравнить результат с точным математическим значением

  1. В точной математике сначала 0,1 + 0,2 = 0,3, а затем 0,3 − 0,3 = 0. Значит, точное значение выражения равно нулю.
  2. В машинном формате десятичные дроби 0,1, 0,2 и 0,3 могут храниться как близкие двоичные приближения. Сложение приближений округляется, а вычитание использует полученный результат, который уже не обязан совпасть с сохранённым приближением 0,3.
  3. В распространённом формате двойной точности результат обычно очень мал и ненулевой — около 5,55 × 10⁻¹⁷. Его точное значение зависит от формата и порядка округления; поэтому сравнивают величину отклонения, а не требуют строгого равенства нулю.

Ответ: математически результат равен 0, а в машинной арифметике может получиться близкое к нулю ненулевое значение из-за приближённого представления и округления.

Для заданного формата с ограниченным числом разрядов определить последствия суммы очень большого и очень малого числа, а также произведения двух больших чисел

  1. Для суммы сначала сравним масштабы слагаемых. Если значащих разрядов малого числа недостаточно, чтобы повлиять на значащую часть большого, после округления сумма может совпасть с большим слагаемым: малое число потеряет значение.
  2. Теперь рассмотрим произведение двух больших чисел. Масштаб результата обычно увеличивается, поэтому нужно сравнить его с верхней границей диапазона выбранного формата.
  3. Если произведение превышает эту границу, возможно переполнение. Если остаётся внутри диапазона, но число разрядов для точного результата недостаточно, оно будет округлено; это уже погрешность, а не переполнение.

Ответ: в сумме может потеряться значащий вклад очень малого слагаемого, а при умножении больших чисел возможны округление или переполнение — конкретный исход зависит от формата и значений.

Типичные ошибки

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

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

Ошибка: требовать точного равенства от приближённых вещественных результатов. Небольшая разница может появиться даже у вычислений, которые математически должны дать одинаковое значение. Её допускают из виду, когда воспринимают сохранённые числа как точные. Для проверки сравните модуль разности с заранее выбранным допуском, подходящим для задачи.

Ошибка: принимать переполнение за обычную небольшую погрешность. Погрешность округления — это близкое приближённое значение внутри возможностей формата, а переполнение означает выход за его диапазон. Путают их, потому что в обоих случаях результат может отличаться от ожидаемого. Проверьте, не превышает ли значение максимально допустимый масштаб: если превышает, речь может идти о переполнении.

Связь с другими темами

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

Что запомнить

  • Компьютер хранит числа конечным числом разрядов.
  • Не всякая десятичная дробь точно представима в двоичной системе.
  • Округление может влиять на промежуточные и итоговые результаты.
  • Погрешность способна накапливаться в последовательности операций.
  • Вычитание близких чисел может привести к потере значащих разрядов.
  • Переполнение возникает, когда результат выходит за диапазон выбранного формата.

Частые вопросы по теме

Почему компьютер иногда выводит 0,30000000000000004 вместо 0,3?

В двоичном формате дроби 0,1 и 0,2 обычно хранятся как ближайшие доступные значения, а не точно. При сложении и последующем выводе проявляется небольшое отличие результата от математического 0,3. Это не ошибка самого сложения, а следствие конечной точности представления.

Всегда ли целые числа компьютер хранит точно?

Не всегда: точность зависит от формата и количества разрядов, выделенных для числа. В ограниченном целочисленном формате значения за пределами допустимого диапазона нельзя представить как положено. У форматов с плавающей запятой также есть предел точного представления целых чисел.

Почему одинаковые вычисления могут дать немного разные результаты?

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

Как отличить погрешность округления от переполнения?

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

Почему для сравнения вещественных чисел используют допуск?

Из-за округления вычисленное значение может чуть отличаться от математически точного, даже если по смыслу результаты совпадают. Поэтому сравнивают модуль разности чисел с заранее выбранным малым допуском. Допуск выбирают с учётом точности вычислений и задачи.

Спросить по теме параграфа

§ 25. Особенности компьютерной арифметики

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Класс
11 класс
Учебник
"Информатика (базовый и углублённый уровень)", Гейн А.Г., Сенокосов А.И.