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

§ 5. Представление чисел в компьютере

"Информатика (базовый уровень)", Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.

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

Кратко о теме

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

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

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

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

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

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

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

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

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

Компьютер хранит числа в двоичной системе, потому что электронным схемам проще надёжно различать два состояния: например, наличие и отсутствие сигнала. Эти состояния кодируют цифрами 1 и 0, а арифметические операции выполняют над последовательностями таких цифр. Значение каждой позиции определяется степенью двойки, поэтому запись можно перевести в привычную десятичную систему. Например, 1101₂ означает 1 × 2³ + 1 × 2² + 0 × 2¹ + 1 × 2⁰, то есть 13.

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

Для положительного целого в знаковом формате обычно используют старший разряд как знак: 0 означает плюс, а оставшиеся позиции хранят величину. Отрицательное число часто записывают дополнительным кодом, чтобы арифметике не требовались отдельные правила для вычитания. Для n разрядов знаковый диапазон равен от −2ⁿ⁻¹ до 2ⁿ⁻¹ − 1, поскольку одна комбинация отведена на знак и распределение отрицательных значений несимметрично. Например, в восьми разрядах можно представить числа от −128 до 127.

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

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

Способы представления чисел в компьютере

СвойствоЦелые числаЧисла с фиксированной точкойЧисла с плавающей точкой
Что хранится в разрядахЦифры двоичного числа и, при необходимости, знакЦифры числа при заранее заданном положении точкиМантисса, порядок и знак
Диапазон представимых значенийОграничен числом разрядов и способом кодированияОграничен разрядностью и положением точкиШирокий, зависит от диапазона порядка
Точность представленияЦелые числа в допустимом диапазоне представляются точноЗависит от числа дробных разрядовЗависит прежде всего от разрядности мантиссы
Основная причина ограниченияКонечное количество разрядовКонечное количество разрядов и фиксированная точкаКонечное количество разрядов мантиссы и порядка
Типичная проблема при вычисленияхПереполнение диапазонаПереполнение или потеря части дробной точностиПогрешность округления

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

Разбор задач

Перевести десятичное число 13 в двоичную систему и записать его в восьмиразрядной разрядной сетке

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

  1. Наибольшая степень двойки, не превосходящая 13, — 2³ = 8. Остаток равен 13 − 8 = 5.
  2. Остаток 5 раскладывается как 2² + 2⁰. Значит, разряды при 2² и 2⁰ тоже равны 1, а разряд при 2¹ равен 0.
  3. Получаем 13₁₀ = 1101₂. Дополняем запись слева четырьмя нулями: 00001101.

Ответ: 13₁₀ = 00001101₂ в восьмиразрядной сетке. Проверка: 8 + 4 + 1 = 13. Нули слева занимают свободные позиции и не меняют значение.

Представить число −13 в восьмиразрядной разрядной сетке с помощью дополнительного кода

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

  1. Записываем модуль: 13₁₀ = 00001101₂.
  2. Инвертируем все восемь разрядов: 00001101 → 11110010.
  3. Прибавляем единицу: 11110010 + 1 = 11110011.

Ответ: −13 в восьмиразрядном дополнительном коде — 11110011. Проверить знак можно по старшему разряду: единица указывает на отрицательное число в этом формате. Если повторить инверсию и прибавление единицы, получится модуль 13.

Записать число 0,001011 в нормализованной форме с плавающей точкой и указать мантиссу и порядок

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

  1. Переносим точку в 0,001011₂ вправо на две позиции и получаем 0,1011₂.
  2. Чтобы сохранить значение, умножаем мантиссу на 2⁻²: 0,001011₂ = 0,1011₂ × 2⁻².
  3. В этой записи мантисса равна 0,1011₂, а порядок равен −2. Если разрядов для мантиссы недостаточно, её младшие цифры округляют.

Ответ: 0,001011₂ = 0,1011₂ × 2⁻²; мантисса — 0,1011₂, порядок — −2. Проверка: сдвиг точки в мантиссе на две позиции влево с учётом множителя 2⁻² возвращает исходное число. Для приведённой записи округление не требуется, но в более коротком формате оно возможно.

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

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

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

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

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

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

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

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

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

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

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

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

Зачем нужен дополнительный код отрицательных чисел?

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

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

Для n беззнаковых разрядов возможны значения от 0 до 2ⁿ − 1. Для знаковых целых в дополнительном коде диапазон равен от −2ⁿ⁻¹ до 2ⁿ⁻¹ − 1. Например, восемь знаковых разрядов дают диапазон от −128 до 127.

Чем представление с плавающей точкой отличается от записи обычной дроби?

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

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

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

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

§ 5. Представление чисел в компьютере

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

Учебник

Оглавление →
Предмет
Информатика
Класс
10 класс
Учебник
"Информатика (базовый уровень)", Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.