"Информатика", Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.
Компьютер хранит числа не в привычной десятичной записи, а в виде последовательностей нулей и единиц. Для целых чисел важны число отведённых разрядов и способ кодирования знака: они задают возможный диапазон значений. Вещественные числа записываются с помощью мантиссы и порядка, поэтому можно представить числа разных масштабов. Но разрядов для мантиссы ограниченное количество, и часть значений приходится округлять.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Разрядная сетка — фиксированное число двоичных разрядов, отведённых для хранения числа. Каждый разряд соответствует одному биту и может содержать 0 или 1. Сетка показывает, сколько места выделено для записи, и помогает понять, какие значения могут поместиться в памяти.
Целое число в памяти — число, записанное двоичным кодом; способ кодирования определяет, как различаются положительные и отрицательные значения. Двоичный код состоит из нулей и единиц, но его смысл зависит от принятого формата. Поэтому одного взгляда на последовательность битов не всегда достаточно, чтобы определить знак числа.
Вещественное число с плавающей запятой — приближённое представление числа с помощью мантиссы и порядка. Запятая как бы перемещается, благодаря чему один формат подходит и для малых, и для больших значений. Такое представление особенно нужно при вычислениях с дробями.
Мантисса и порядок — части записи числа с плавающей запятой: мантисса задаёт значащие цифры, а порядок — положение запятой. Мантисса отвечает за точность записи, а порядок — за масштаб числа. Разделение этих ролей позволяет хранить значения, сильно отличающиеся по величине.
Компьютер хранит числа в виде последовательностей битов, потому что состояние элемента памяти удобно надёжно различать как одно из двух: условно «включено» или «выключено». Этим состояниям сопоставляют 1 и 0. Разрядная сетка ограничивает число битов для значения, так как ячейке или группе ячеек выделен определённый объём памяти. Значит, компьютер не может записать в эту сетку произвольную последовательность любой длины.
Положительное целое число сначала переводят в двоичную систему: например, десятичное 13 превращается в 1101₂. Но для хранения чисел разных знаков нужен формат, который устанавливает, как читать битовые комбинации. В одних форматах часть разрядов может использоваться для знака, в других знак задаётся иначе. Поэтому при разборе числа необходимо знать не только его биты, но и правила кодирования.
При фиксированной длине сетки существует конечное количество битовых комбинаций: для n разрядов их 2ⁿ. Каждая комбинация соответствует значению согласно выбранному формату, поэтому набор доступных целых чисел тоже ограничен. Если формат выделяет возможности для представления отрицательных чисел, границы положительной части диапазона меняются. Число за пределами диапазона нельзя сохранить как обычное значение в этой сетке: нужно увеличить разрядность или выбрать другой формат.
Вещественное число представляют мантиссой и порядком, которые вместе задают его значение. Например, при нормализованной записи 0,125 можно представить как 1,0 × 2⁻³: мантисса 1,0 задаёт значащую часть, а порядок −3 задаёт масштаб. Благодаря порядку запятую можно мысленно сдвигать, не записывая длинные цепочки нулей. Это позволяет одному формату охватывать числа разных величин.
Количество разрядов, выделенных под мантиссу, ограничено, поэтому в ней нельзя записать бесконечно много цифр. Некоторые дроби в двоичной системе имеют бесконечную запись, и компьютер сохраняет лишь конечное число её разрядов. Оставшиеся цифры отбрасывают или округляют, поэтому сохранённое значение немного отличается от исходного. При вычислениях эти небольшие отличия могут повлиять на итог.
| Характеристика | Целые числа | Вещественные числа |
|---|---|---|
| Основные части записи | Двоичные разряды | Мантисса и порядок |
| Как задаётся знак | Правилом выбранного формата кодирования | Форматом представления вещественного числа |
| Зависимость диапазона от числа разрядов | Больше разрядов — больше доступных комбинаций; границы зависят от формата | Зависит от числа разрядов мантиссы и порядка |
| Точность представления | Представимые целые значения хранятся точно | Часто приближённая |
| Причина возможной потери точности | Выход числа за допустимый диапазон | Ограниченная длина мантиссы и округление |
Сравнивайте строки таблицы, чтобы увидеть, почему для целых и вещественных чисел применяют разные правила хранения. Если нужно проверить, поместится ли значение, сначала выясните формат и число разрядов. Для оценки точности дроби обратите внимание на длину мантиссы.
Условие: переведите 13 в двоичную систему и укажите запись в разрядной сетке из 8 разрядов. Сетка здесь рассматривается как беззнаковая, поэтому все восемь битов участвуют в записи величины. Нужно сначала найти двоичный код, а затем проверить его длину.
Ответ: 13₁₀ = 1101₂, а в беззнаковой разрядной сетке из 8 разрядов число записывается как 00001101. Нули слева дополняют запись до длины сетки и не меняют её числовое значение. Для другого формата, например со знаком, правила размещения битов нужно уточнить.
Условие: объясните, почему целое число, выходящее за допустимый диапазон формата, нельзя сохранить. Пусть для числа выделено n разрядов: в них помещается 2ⁿ различных битовых комбинаций. Однако границы значений зависят от того, как формат распределяет эти комбинации между числами.
Ответ: число нельзя корректно сохранить в выбранной разрядной сетке, потому что все её комбинации уже соответствуют значениям по правилам формата. Нельзя просто дописать новый разряд, не изменив выделенную память. Нужно использовать больший формат или другую разрядность.
Условие: представьте 0,125 в форме с мантиссой и порядком и поясните, почему другое вещественное число может храниться приближённо. Переводим десятичную дробь в двоичную: 0,125₁₀ = 0,001₂. Затем переносим двоичную запятую вправо на три позиции, получая нормализованную запись.
Ответ: 0,125 представляется как 1,0₂ × 2⁻³. Если точная двоичная запись другого числа длиннее доступной мантиссы, лишние цифры приходится округлить или отбросить. Поэтому сохранённое значение может быть близким к исходному, но не совпадать с ним точно.
Ошибка — считать, что любое число можно сохранить точно. Её допускают, потому что в обычной записи можно продолжать добавлять цифры, но разрядная сетка памяти конечна, а вещественные значения часто округляются. Проверьте, сколько разрядов отведено числу и представляется ли нужное значение в этом формате без потери точности.
Ошибка — считать диапазон целых только по числу разрядов. Так думают, когда забывают, что часть комбинаций может использоваться для отрицательных значений и знак кодируется по правилам формата. Чтобы проверить диапазон, выясните и длину сетки, и способ кодирования знака, а затем определите границы значений.
Ошибка — путать мантиссу с порядком. Это происходит потому, что обе части участвуют в общей записи числа, но выполняют разные задачи: мантисса задаёт значащие цифры, а порядок — масштаб и положение запятой. Проверьте себя, спросив, какая часть отвечает за точность, а какая позволяет представить большое или малое значение.
Ошибка — добавлять нули к двоичной записи, не учитывая формат. Нули слева могут быть лишь дополнением до длины разрядной сетки, а не новой записью числа; в форматах со знаком правила могут отличаться. Сначала определите, зачем добавляются разряды, и проверьте, что формат допускает такое дополнение без изменения значения.
Для изучения представления чисел нужно знать, что такое бит и байт, и уметь переводить целые числа между десятичной и двоичной системами. Эти навыки помогают прочитать битовую запись и понять, сколько места она занимает. Позже тема пригодится при изучении объёма памяти и машинных вычислений. Понимание ограниченной точности также объясняет, почему при вычислениях с вещественными числами возникают ошибки округления.
Почему компьютер хранит числа в двоичном виде?
Память компьютера состоит из электронных элементов, которые удобно использовать в двух состояниях: условно «включено» и «выключено». Их можно обозначить цифрами 1 и 0, поэтому двоичная запись естественно подходит для хранения и обработки данных.
Почему нельзя представить целым числом любое сколь угодно большое значение?
Для каждого числа выделяют ограниченное количество битов, а из конечного числа битовых комбинаций можно составить лишь конечное число значений. Когда число выходит за границы доступного диапазона, его нельзя корректно сохранить в выбранном формате.
Зачем при хранении целого числа нужен способ кодирования знака?
Битовые комбинации сами по себе не объясняют, какие значения положительные, а какие отрицательные. Формат кодирования устанавливает это правило и тем самым влияет на то, какие числа можно представить при заданном количестве разрядов.
Что такое мантисса и порядок?
Мантисса содержит значащие цифры числа, а порядок определяет положение запятой и масштаб числа. Вместе они позволяют записывать как очень малые, так и очень большие значения.
Почему результат вычисления с вещественными числами иногда получается неточным?
Для хранения мантиссы отводится ограниченное количество разрядов. Поэтому некоторые значения приходится округлять, а погрешность может проявляться и в результатах последующих вычислений.
§ 19. Числа в памяти компьютера