"Информатика (базовый уровень)", Угринович Н.Д.
Компьютер хранит числа как последовательности битов — нулей и единиц. Чтобы понять значение такой последовательности, нужно знать её разрядность и способ кодирования: они определяют знак, положение запятой, диапазон и точность числа. Целые числа переводят в двоичную систему, а дробные представляют с помощью разрядов после запятой или мантиссы и порядка. Из-за ограниченного числа битов некоторые значения хранятся приближённо.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Двоичное кодирование числа — представление числа последовательностью нулей и единиц. Каждый разряд такой записи имеет свой вес, то есть соответствует определённой степени двойки. Благодаря весам битов последовательность можно прочитать как число, а компьютер — хранить и обрабатывать её с помощью электронных схем.
Целое число в памяти компьютера — целое значение, записанное ограниченным числом битов. Один из разрядов или отдельное правило кодирования помогает представить знак, а число битов называется разрядностью. Эти сведения нужны, чтобы правильно прочитать запись и определить, какие целые значения помещаются в память.
Число с фиксированной запятой — число, у которого положение запятой заранее задано форматом. Одни разряды отводятся целой части, другие — дробной, поэтому запятая при чтении всегда ставится в одном месте. Такой формат удобен, когда заранее известны масштаб чисел и требуемая точность.
Число с плавающей запятой — число, представляемое мантиссой и порядком. Мантисса хранит значащие цифры, а порядок задаёт масштаб и положение запятой. Это позволяет записывать очень большие и очень малые значения, хотя число сохраняемых значащих цифр ограничено.
Двоичная запись позиционная: значение разряда зависит не только от цифры, но и от его места. Справа налево целые разряды имеют веса 2⁰, 2¹, 2² и далее, потому что каждый следующий разряд означает вдвое большее количество. Чтобы восстановить число, умножают каждую цифру на её вес и складывают результаты; например, 1101₂ = 1·8 + 1·4 + 0·2 + 1·1 = 13.
Целое число переводят из десятичной системы последовательным делением на 2, потому что остаток показывает очередной младший двоичный разряд. Частное снова делят на 2, пока оно не станет нулём; так последовательно находятся разряды от младшего к старшему. Поэтому остатки читают в обратном порядке: первый остаток относится к самому правому разряду, а последний — к самому левому.
Память выделяет числу ограниченное количество битов, поэтому представить можно не любое целое значение. Способ кодирования задаёт, как распознаётся знак и как читаются остальные разряды; например, в дополнительном коде один бит не просто отделён под знак, а участвует в коде отрицательного числа. Чем больше разрядность, тем больше разных кодов доступно, а значит, обычно шире диапазон значений.
После двоичной запятой разряды имеют веса 2⁻¹, 2⁻², 2⁻³ и далее, то есть ½, ¼, ⅛. Дробную часть переводят последовательным умножением на 2: целая часть каждого результата становится очередным двоичным разрядом. Запись некоторых десятичных дробей при этом не заканчивается, поскольку их значение нельзя точно составить из конечного набора отрицательных степеней двойки.
У вещественных чисел может быть очень разный масштаб: от крошечных долей до огромных величин. Мантисса хранит значащую часть числа, а порядок указывает, на какую степень основания нужно её умножить; так положение запятой как бы перемещается. Число битов для мантиссы ограничено, поэтому длинную запись округляют, и вычисления с такими значениями могут давать приближённый результат.
| Характеристика | Целое число | Число с фиксированной запятой | Число с плавающей запятой |
|---|---|---|---|
| Какие части числа кодируются | Целое значение и знак по правилам формата | Целая и дробная части | Мантисса, порядок и знак |
| Как задаётся положение запятой | Не применяется | Заранее и неизменно | Определяется порядком |
| Как представляется знак | Правилами выбранного кода | Правилами выбранного формата | Отдельным признаком знака |
| От чего зависит диапазон значений | От разрядности и способа кодирования | От числа разрядов целой части | От диапазона значений порядка |
| От чего зависит точность | Целые значения кодируются точно в диапазоне | От числа дробных разрядов | От числа разрядов мантиссы |
Сравнивайте строки таблицы, чтобы понять, чем отличаются форматы по устройству, диапазону и точности. Фиксированная запятая подходит, когда масштаб заранее известен, а плавающая — когда важен широкий диапазон. При этом широкий диапазон плавающей запятой не означает бесконечную точность.
Условие. Переведите число 25 из десятичной системы счисления в двоичную. Нужно определить, какие степени двойки составляют число, и записать полученные разряды в правильном порядке. Для проверки можно затем восстановить десятичное значение.
Ответ: 25₁₀ = 11001₂. Обратный порядок чтения нужен потому, что остатки появляются от младшего разряда к старшему. Проверка по степеням двойки подтверждает, что запись обозначает исходное число.
Условие. В представлении целых чисел используются 8 битов. Требуется выяснить, сколько битов остаётся после учёта знака и определить диапазон, оговорив способ кодирования. Выберем дополнительный код — распространённый способ хранения знаковых целых.
Ответ: используются 8 битов, диапазон в дополнительном коде — от −128 до 127. Здесь некорректно просто считать, что один бит — знак, а оставшиеся семь независимо кодируют модуль: это было бы другим способом представления. Диапазон определяется именно выбранным кодом и общей разрядностью.
Условие. Переведите 0,625 в двоичную систему и выясните, можно ли точно представить там 0,1. Для дроби применяем умножение на 2, а целую часть результата записываем как очередной бит. Если дробная часть обнуляется, двоичная запись заканчивается.
Ответ: 0,625₁₀ = 0,101₂, а 0,1₁₀ не имеет конечной двоичной записи. Первое равенство можно проверить: ½ + ⅛ = 0,625. Значение 0,1 при хранении с ограниченным числом битов приходится округлять.
Остатки от деления на 2 иногда записывают в том порядке, в котором получили. Так двоичное число оказывается обращённым, потому что первый остаток задаёт младший разряд, а не старший. Проверяйте ответ переводом обратно в десятичную систему или чтением остатков снизу вверх.
Набор битов можно принять за число без дополнительных сведений. Но одна и та же последовательность при разной разрядности или разных форматах может обозначать разные значения, в том числе положительное или отрицательное. Перед расшифровкой уточняйте длину записи и способ кодирования.
Кажется, что любая конечная десятичная дробь должна иметь конечную двоичную запись. Это неверно: конечность десятичной записи не гарантирует, что значение можно сложить из конечного набора долей ½, ¼, ⅛ и так далее. Проверяйте умножением дробной части на 2: если процесс не заканчивается, запись бесконечна.
Результат вычислений с вещественными числами нередко считают абсолютно точным. Однако бесконечную дробную запись приходится обрезать, а ближайшее сохранённое значение может немного отличаться от исходного. Учитывайте точность формата и проверяйте, не влияет ли округление на вывод задачи.
Для понимания двоичной записи нужны знания о позиционных системах счисления, разрядах и основаниях систем. Перевод между системами помогает переходить от привычной десятичной записи к двоичному коду и проверять ответы. Эти навыки позволяют самостоятельно разбирать, что именно означает последовательность битов.
Двоичные числа лежат в основе логических операций и арифметики процессора. Процессор выполняет действия над кодами, а правила формата определяют, как читать их как числа. Поэтому разрядность и способ представления важны не только для хранения, но и для вычислений.
Ограниченная точность особенно важна при программировании и анализе компьютерных расчётов. Если результат близок к границе допустимых значений или решение зависит от малой разницы чисел, округление может повлиять на вывод. Понимание форматов помогает отличать точное значение от приближённого.
Почему компьютер хранит числа в двоичном виде?
Электронные схемы удобно строить так, чтобы они различали два устойчивых состояния: условные ноль и единицу. Поэтому информацию в памяти кодируют битами, а числа представляют двоичными последовательностями. Для интерпретации последовательности компьютеру также нужны сведения о разрядности и формате.
Как быстро перевести целое число из десятичной системы в двоичную?
Делите число на 2 и записывайте остаток после каждого деления. Продолжайте с частным, пока оно не станет нулём, а затем прочитайте остатки снизу вверх. Например, для 25 остатки дают 11001₂.
Как компьютер хранит знак числа?
Знак задаётся по правилам выбранного формата, обычно с использованием старшего разряда или отдельного поля. Для целых часто применяют дополнительный код: тогда отрицательное значение кодируется особым образом, а не простым добавлением знака. Поэтому значение битов нельзя определить без знания способа кодирования.
Почему дробь 0,1 может храниться неточно?
Двоичная дробь строится из разрядов с весами ½, ¼, ⅛ и так далее. Десятичная дробь 0,1 не представляется конечной суммой таких весов, поэтому её двоичная запись бесконечна. В памяти сохраняют лишь ограниченное число разрядов, из-за чего значение округляется.
Чем представление с плавающей запятой отличается от представления с фиксированной запятой?
При фиксированной запятой её положение заранее задано, поэтому число разрядов для целой и дробной частей ограничено. При плавающей запятой значение задают мантиссой и порядком, который определяет масштаб числа. Такой формат охватывает широкий диапазон, но сохраняет ограниченную точность.
1.5. Кодирование и обработка числовой информации