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

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

"Информатика. Базовый уровень", Босова Л.Л., Босова А.Ю.

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

Кратко о теме

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

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

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

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

Разрядная сетка — набор разрядов, выделенных для записи числа в памяти. Каждый разряд хранит бит, то есть 0 или 1, поэтому сетка длиной n бит допускает не более 2ⁿ разных кодов. Чем она короче, тем меньше значений можно закодировать и тем уже возможный диапазон.

Машинное слово — группа битов, которую процессор обрабатывает как единое целое. Длина слова влияет на количество кодов: например, из 8 бит можно составить 2⁸ кодов, а из 16 — 2¹⁶. Это помогает понять, почему компьютеру недостаточно просто знать число: ему важно, сколько разрядов отведено под его запись.

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

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

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

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

Беззнаковые целые числа записывают в двоичной позиционной системе. Значение каждого разряда равно его биту, умноженному на соответствующую степень двойки: крайний справа разряд соответствует 2⁰, следующий — 2¹ и так далее. Складывая вклады разрядов, получают значение числа; например, единицы в позициях 5, 3, 2 и 0 дают 32 + 8 + 4 + 1.

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

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

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

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

СвойствоЦелое без знакаЦелое со знакомС плавающей запятой
Какие числа представляютсяЦелые от нуля и вышеПоложительные и отрицательные целые, обычно также нольПриближённые целые и дробные числа разных масштабов
Как распределяются разрядыВсе разряды кодируют значениеКодируют знак и величину согласно выбранному форматуРазряды отводятся под знак, мантиссу и порядок
Диапазон значенийДля n бит: 0…2ⁿ − 1Зависит от кодирования; в дополнительном коде: −2ⁿ⁻¹…2ⁿ⁻¹ − 1Зависит от диапазона порядка и формата
Точность представленияВсе целые в диапазоне представляются точноВсе целые в диапазоне представляются точноОграничена количеством разрядов мантиссы
Причины потери информацииВыход за диапазон; дробная часть не входит в форматВыход за диапазон; дробная часть не входит в форматОкругление мантиссы, переполнение или потеря слишком малых значений

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

Разбор задач

Задача 1. Перевести двоичное число 101101₂ в десятичную систему счисления. Здесь важно не читать запись как десятичное число из тех же цифр, а учесть вес каждой двоичной позиции. Справа налево разрядам соответствуют степени двойки, начиная с нулевой.

  1. Запишем вклады разрядов: 101101₂ = 1·2⁵ + 0·2⁴ + 1·2³ + 1·2² + 0·2¹ + 1·2⁰.
  2. Вычислим только ненулевые слагаемые: 32 + 8 + 4 + 1.
  3. Сложим их: 32 + 8 + 4 + 1 = 45.

Ответ: 101101₂ = 45₁₀. Проверка проста: каждое слагаемое соответствует разряду, в котором стояла единица. Нули не меняют сумму, но их позиции сохраняют веса остальных разрядов.

Задача 2. Для 8-разрядного целого без знака определить диапазон и проверить, представимо ли число 260. Поскольку все восемь битов идут на значение, кодов будет 2⁸ = 256. Отсчёт значений начинается с нуля, поэтому верхняя граница на единицу меньше числа кодов.

  1. Находим число кодов: 2⁸ = 256.
  2. Записываем диапазон: от 0 до 256 − 1, то есть от 0 до 255.
  3. Сравниваем 260 с верхней границей: 260 больше 255, значит, для него кода в этом формате нет.

Ответ: диапазон — 0…255; число 260 не представимо. Если попытаться записать его в такую сетку, произойдёт переполнение или система сообщит об ошибке — поведение зависит от языка программирования и операции. Нельзя заключать, что число поместится, только потому, что оно невелико на бытовой шкале: сравнивать нужно с пределами формата.

Задача 3. Сравнить числа 0,1 и 0,5 в двоичной системе и объяснить погрешность при вычислениях с 0,1. Проверяем, можно ли получить дроби конечной записью в основании 2. Дробь 0,5 равна ½, а её двоичная запись — 0,1₂; число 0,1 такой конечной записи не имеет.

  1. Для 0,5 достаточно одного двоичного разряда после запятой: 0,1₂ = 1·2⁻¹ = 0,5.
  2. Десятичная дробь 0,1 равна 1/10. В двоичной системе её разложение бесконечно, поэтому конечная мантисса не может сохранить все разряды.
  3. Компьютер округляет значение 0,1 до ближайшего доступного кода. При вычислениях округление влияет на результат и может накапливаться.

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

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

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

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

Конечная десятичная дробь не обязательно конечна в двоичной системе. Это заблуждение появляется из-за привычки переносить свойства десятичной записи на любое основание. Например, 0,1 в двоичной системе записывается бесконечно, тогда как 0,5 имеет точную запись 0,1₂. Проверяйте дробь в нужной системе счисления, а не по виду её записи в десятичной.

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

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

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

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

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

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

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

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

От чего зависит диапазон целых чисел, которые можно хранить?

Он зависит от количества выделенных разрядов и от соглашения о кодировании. Например, n бит без знака дают диапазон от 0 до 2ⁿ − 1, а n-разрядное целое в дополнительном коде — от −2ⁿ⁻¹ до 2ⁿ⁻¹ − 1.

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

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

Почему при вычислениях иногда появляется небольшая погрешность?

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

Что происходит, если результат вычисления выходит за допустимый диапазон?

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

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

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

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

Учебник

Оглавление →
Предмет
Информатика
Класс
10 класс
Учебник
"Информатика. Базовый уровень", Босова Л.Л., Босова А.Ю.