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

§ 20. Представление и обработка чисел

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

Объяснение темы В оглавлении: § 20. Представление и обработка чисел

Кратко о теме

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

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

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

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

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

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

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

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

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

При фиксированном количестве битов существует конечное число комбинаций: n бит дают 2ⁿ вариантов. Без знака все они представляют неотрицательные числа от 0 до 2ⁿ − 1, потому что ни один код не нужно выделять для знака. В формате со знаком часть комбинаций описывает отрицательные значения, поэтому максимальное положительное число становится меньше. Значит, выбор числа разрядов и наличия знака сразу задаёт границы целых чисел, которые компьютер сможет хранить.

Для отрицательных чисел используют дополнительный код, чтобы сложение выполнялось одним и тем же двоичным устройством независимо от знаков слагаемых. Например, в восьми битах +5 записывается как 00000101. Инвертируем биты и получаем 11111010, затем прибавляем единицу: 11111011 — это −5. При сложении −5 и +3 получаем 11111110, то есть −2; восьмибитная арифметика автоматически отбрасывает перенос за пределы разрядов. Поэтому не нужно отдельно вычитать модули чисел разных знаков.

Вещественное число раскладывают на знак, мантиссу и порядок, чтобы хранить его масштабно: не занимать отдельные разряды для каждой позиции запятой. Например, число можно представить как 1,25 × 10³; в компьютере используется аналогичная идея с основанием 2. Нормализация приводит число к виду, где перед запятой стоит одна значащая цифра, а оставшиеся хранятся в мантиссе. Благодаря этому доступные разряды используются для значащей части числа, а положение запятой задаёт порядок.

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

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

Представление целых и вещественных чисел в памяти

СвойствоЦелое числоВещественное число
Основные части представленияДвоичные разряды; при знаковом формате — код знакового числаЗнак, мантисса и порядок
Представление знакаЗависит от формата; обычно применяют дополнительный кодОтдельный разряд знака
Диапазон значенийКонечный, определяется количеством битов и наличием знакаКонечный, определяется диапазоном порядка
ТочностьВсе целые в диапазоне представляются точноЗависит главным образом от длины мантиссы
Причины неточного результатаВыход за диапазон и переполнениеОграниченная мантисса и округление
Пример возможной ошибки вычисленияВ 8-битном знаковом формате 120 + 20 выходит за максимум 1270,1 + 0,2 может отличаться от точного 0,3

Сравнивайте строки таблицы, чтобы понять, подходит ли формат для конкретной задачи. Для целых чисел проверьте, попадают ли все значения в диапазон, а для вещественных — достаточно ли точности мантиссы. Если важны точные десятичные доли, обычный двоичный формат с плавающей запятой может не подойти.

Разбор задач

Задача 1. Представить число 13 в двоичной системе и определить, сколько бит требуется для его хранения без знака. Удобно последовательно делить число на 2: остатки дают двоичные разряды, но появляются они в обратном порядке. Затем проверим результат по диапазону беззнакового формата.

  1. Делим 13 на 2: частное 6, остаток 1.
  2. Делим 6 на 2: частное 3, остаток 0; далее 3 даёт остаток 1, 1 даёт остаток 1.
  3. Читаем остатки снизу вверх: 13₁₀ = 1101₂. Для четырёх бит диапазон равен от 0 до 2⁴ − 1 = 15, значит, число 13 помещается.

Ответ: 13 = 1101₂; без знака достаточно 4 бит. Если формат заранее требует восемь бит, запись будет 00001101, но само число можно закодировать и четырьмя.

Задача 2. Записать −5 в дополнительном коде для восьмиразрядного представления. Сначала кодируем модуль 5, затем инвертируем все разряды и прибавляем единицу. Важно выполнить оба последних действия, иначе получится не дополнительный код.

  1. Записываем +5 в восьми битах: 00000101.
  2. Инвертируем биты: 11111010.
  3. Прибавляем единицу: 11111010 + 1 = 11111011.

Ответ: −5 в восьмиразрядном дополнительном коде — 11111011. Проверка сложением с +5 даёт 1 00000000; перенос за восьмой разряд отбрасывается, остаётся 00000000. Это подтверждает, что коды чисел противоположных знаков складываются одной двоичной операцией.

Задача 3. Объяснить, почему 0,1 + 0,2 может отличаться от 0,3, и оценить переполнение целочисленной суммы. Сначала разделим две причины: дробная погрешность связана с мантиссой, а переполнение — с выходом за диапазон. Для проверки возьмём восьмибитный знаковый формат.

  1. Двоичные записи 0,1 и 0,2 бесконечны, поэтому в мантиссе сохраняются приближённые значения.
  2. При сложении приближений и последующем округлении результат может стать, например, 0,30000000000000004 вместо точного 0,3.
  3. Для целых чисел в восьмибитном знаковом формате максимум равен 2⁷ − 1 = 127. Сумма 120 + 20 = 140 больше 127, следовательно, результат не представим в этом формате.

Ответ: отличие от 0,3 вызвано приближённым хранением дробей и округлением; сумма 120 + 20 в указанном формате вызывает переполнение. В обоих случаях результат машинного вычисления нельзя автоматически считать точным математическим результатом.

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

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

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

Ошибка 3. Полагать, что увеличение порядка повышает точность. Порядок сдвигает запятую и расширяет доступный масштаб чисел, а точность в основном задаёт количество разрядов мантиссы. Чтобы проверить себя, спросите отдельно: «Насколько большое число поместится?» и «Сколько значащих цифр сохранится?».

Ошибка 4. Игнорировать округление и переполнение, считая результат вычисления точным. Эту ошибку допускают, когда смотрят только на математическую операцию и не учитывают формат хранения. Сравните результат с диапазоном типа и помните, что округление слегка меняет значение, а переполнение означает выход за границу представимых чисел.

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

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

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

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

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

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

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

Как получить дополнительный код отрицательного числа?

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

Что означают мантисса и порядок?

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

Почему 0,1 + 0,2 иногда не равно точно 0,3?

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

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

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

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

§ 20. Представление и обработка чисел

Учебник

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