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

Лабораторная работа № 6 (к § 24 и 25) Представление вещественных чисел в памяти компьютера. Особенности компьютерной арифметики

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

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

Кратко о теме

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

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

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

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

Вещественное число с плавающей запятой — число, которое компьютер хранит приближённо в виде знака, значащей части и порядка. «Плавающая запятая» означает, что положение запятой задаётся не фиксированным числом разрядов, а порядком. Это позволяет одной и той же схеме хранить числа разных масштабов.

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

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

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

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

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

Перед кодированием двоичную запись обычно нормализуют, то есть приводят к стандартному виду: 1,xxxxx₂ × 2ⁿ. Перенос запятой влево или вправо компенсируют изменением степени двойки, так что само значение не меняется. В нормализованной записи первая значащая цифра после запятой фиксирована, поэтому проще однозначно задавать число и использовать отведённые разряды для оставшихся цифр. Для нуля и отдельных специальных значений могут действовать особые правила кодирования.

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

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

В точной математике перестановка скобок при сложении не меняет результат, но компьютер округляет промежуточные значения. Если сперва сложить большое число с малым, малое может не повлиять на сохранённый результат; при другом порядке оно может сохраниться до следующего шага. Аналогично порядок сложения может изменить накопление погрешности. Значит, вычисления с плавающей запятой не всегда обладают всеми свойствами точной арифметики.

Устройство и ограничения представления вещественных чисел

ХарактеристикаЧто означаетКак проявляется при вычислениях
ЗнакУказывает, положительное число или отрицательное.Позволяет хранить значения обоих знаков; правила для нуля зависят от формата.
МантиссаСодержит значащие двоичные разряды числа.Её длина ограничивает точность и вызывает округление.
ПорядокЗадаёт степень основания, то есть масштаб числа.Ограниченный диапазон порядка приводит к переполнению или потере малых значений.
ОкруглениеЗамена точного значения ближайшим доступным для хранения.Появляется небольшая ошибка, которая может накапливаться в следующих операциях.
Ограниченность диапазонаКомпьютер представляет числа только в пределах формата.Слишком большое значение может переполниться, а слишком малое — потерять точность или стать нулём.
Машинный эпсилонНаименьшее положительное ε, для которого 1 + ε > 1.Показывает, насколько близкие к единице значения ещё различимы в данной арифметике.

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

Разбор задач

Нормализованная запись двоичного числа

Условие. Представить число 101,101₂ в нормализованном виде с мантиссой и порядком. Требуется сохранить значение числа, изменив только положение запятой и компенсировав перенос степенью двойки. Для нормализованной двоичной записи используем вид 1,xxxxx₂ × 2ⁿ.

  1. Сначала находим, где должна стоять запятая: перед первой значащей цифрой. Из 101,101₂ получаем 1,01101₂.
  2. Запятая переместилась влево на два разряда. Чтобы исходное число осталось тем же, нормализованную мантиссу умножаем на 2².
  3. Проверяем результат: 1,01101₂ × 2² = 101,101₂. Значит, преобразование сохраняет значение, а порядок положительный и равен 2.

Ответ: 101,101₂ = 1,01101₂ × 2². Здесь мантисса равна 1,01101₂, а порядок — 2. При переносе запятой вправо порядок был бы отрицательным, поскольку масштаб пришлось бы уменьшить.

Сравнение 0,1 + 0,2 и 0,3

Условие. Объяснить, почему проверка 0,1 + 0,2 == 0,3 может вернуть ложь в программе. На первый взгляд десятичные дроби просты и их сумма очевидна. Но компьютерная арифметика обычно хранит такие значения в двоичном формате с конечной мантиссой.

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

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

Зависимость от порядка сложения

Условие. Сравнить (a + b) + c и a + (b + c), если a = 10²⁰, b = −10²⁰, c = 1. Предположим, что используется обычный формат с конечной точностью, например двоичная арифметика двойной точности. В точной математике оба выражения равны 1, но при вычислениях сохраняются округлённые промежуточные значения.

  1. Считаем первое выражение: a + b = 10²⁰ − 10²⁰ = 0. Затем 0 + 1 = 1, поэтому результат равен 1.
  2. Во втором выражении сначала складываем b и c. Число 1 слишком мало по сравнению с −10²⁰, чтобы заметно изменить округлённое значение, поэтому b + c может округлиться до −10²⁰.
  3. Теперь складываем a и полученное приближение: 10²⁰ + (−10²⁰) = 0. Промежуточная единица потерялась, и результат отличается от первого.

Ответ: обычно (a + b) + c даёт 1, а a + (b + c) — 0. Причина не в изменении правил сложения, а в округлении промежуточного результата и огромной разнице масштабов чисел. Для точных результатов вычислений важно выбирать подходящий алгоритм и порядок операций.

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

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

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

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

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

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

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

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

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

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

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

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

Что такое мантисса и порядок числа?

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

Почему дробь 0,1 нельзя точно представить в двоичной системе?

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

Почему выражение a + b + c может давать разные результаты при разной расстановке скобок?

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

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

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

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

Лабораторная работа № 6 (к § 24 и 25) Представление вещественных чисел в памяти компьютера. Особенности компьютерной арифметики

Учебник

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