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

Информатика · 8 класс · Системы счисления
Источник: https://razlozheno.ru/subject/informatika/8/predstavlenie-chisel-v-kompyutere

Как компьютер хранит целые числа без знака и со знаком и как он записывает вещественные числа в экспоненциальной форме.

## Чему научишься

- Ты сможешь найти наибольшее целое число без знака для ячейки из $n$ разрядов по формуле $N_{max} = 2^n - 1$
- Ты сможешь объяснить, чем прямой код отличается от дополнительного и что означает старший разряд
- Ты сможешь записать вещественное число в виде $A = \pm m \cdot q^p$ и сказать, что определяет диапазон, а что точность

## С чего начать

Почему в одном байте нельзя хранить число 256, хотя 255 — пожалуйста? И почему компьютер помнит, что число отрицательное, если минус в память не положишь?

## 1. Ячейка памяти и целые числа без знака

*Сколько влезает в $n$ разрядов*

Представь ряд из одинаковых выключателей. У каждого только два положения: выключен (0) или включён (1). Память компьютера устроена так же: она состоит из ячеек, а ячейка — из таких «выключателей». Один выключатель — это один бит. Восемь выключателей подряд — один байт.

**Бит**

**Бит (разряд)** — элемент ячейки оперативной памяти компьютера, обладающий двумя устойчивыми состояниями (0 и 1) и служащий для хранения одного бита двоичного числа.

**Бытовая аналогия:** бит — как обычный выключатель света: он либо выключен (0), либо включён (1).

**Как запомнить:** «Бит — один переключатель: 0 или 1».

*Рисунок: Прямоугольная ячейка из n разрядов со стрелками к (n−1)-му и 0-му разрядам*

Разряды нумеруют справа налево: самый правый — нулевой, самый левый — $(n-1)$-й. Всего разрядов $n$. Ячейки бывают разной длины: 8, 16, 32 и 64 бита.

**Беззнаковое представление**

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

**Бытовая аналогия:** представь ряд из ячеек-счётчиков, где каждая ячейка показывает только 0 или 1, и ни одна ячейка не зарезервирована под знак минус: всё место работает на само число.

**Как запомнить:** «Без знака — все разряды на число».

Раз все разряды работают на число, самое маленькое значение — когда все выключатели выключены: $0$. Самое большое — когда все включены: одни единицы. Сколько это в десятичной записи, показывает формула.

**Наибольшее целое без знака**

$N_{max} = 2^n - 1$

где $N_{max}$ — наибольшее число, которое поместится в ячейку, $n$ — количество разрядов (бит) ячейки памяти.

**Почему «два в степени» и почему «минус один»**

Каждый выключатель удваивает число вариантов: один бит — 2 комбинации, два бита — 4, три — 8. Всего комбинаций у $n$ разрядов $2^n$. Но счёт начинается с нуля, поэтому комбинации нумеруются от $0$ до $2^n - 1$: ноль занял одну комбинацию, и последний номер на единицу меньше их числа. Это как этажи с нулевым: если в доме 256 этажей, начиная с нулевого, то верхний будет 255-м.

**Как запомнить:** опорные числа. 8 бит — $255$, 16 бит — $65535$. Самопроверка: результат всегда на единицу меньше степени двойки, то есть число вроде $256$ или $65536$ в ответе быть не может.

**Пример: Наибольшее число в ячейке из 8 и 16 разрядов**

1. Ячейка из 8 разрядов: $n = 8$, тогда $2^8 = 256$.
2. Считаем: $N_{max} = 2^8 - 1 = 255$.
3. Ячейка из 16 разрядов: $2^{16} = 65536$, значит $N_{max} = 65536 - 1 = 65535$.
4. Диапазон для 8 бит: от $0$ до $255$. Для 16 бит: от $0$ до $65535$.

**Проверь себя:** Чему равно наибольшее беззнаковое число в ячейке из 32 разрядов? Не считай, вспомни таблицу.
**Ответ:** $N_{max} = 2^{32} - 1 = 4294967295$. Для 64 разрядов это число $18\,446\,744\,073\,709\,551\,615$.

**Почему все единицы дают именно $2^n - 1$**

Если в ячейке из $n$ разрядов все единицы, то число на единицу меньше, чем $1$ с $n$ нулями. Эта запись — единица, за которой стоят $n$ нулей, — равна $2^n$. Например, $11111111_2 + 1 = 100000000_2 = 256$. Значит, $11111111_2 = 256 - 1 = 255$.

### Проверь себя

**Из чего состоит физическая система ячейки оперативной памяти компьютера?**
- Из однородных элементов, обладающих двумя устойчивыми состояниями. — верно
- Из элементов, каждый из которых хранит байт информации целиком.
- Из непрерывных физических проводников без фиксированных состояний.
- Из неоднородных элементов, обладающих тремя устойчивыми состояниями.
> Ячейка оперативной памяти состоит из элементов, имеющих два устойчивых состояния, которые соответствуют логическому нулю и единице.

**Какое количество разрядов обычно отводится в компьютере под представление целых чисел?**
- 2, 4, 8 или 10 разрядов.
- 10, 20, 30 или 40 разрядов.
- 12, 24, 48 или 96 разрядов.
- 8, 16, 32 или 64 разряда. — верно
> Для представления целых чисел в компьютерной памяти стандартно используется 8, 16, 32 или 64 разряда (бита).

**Для каких типов данных используется беззнаковое представление целых чисел?**
- Для произвольных вещественных чисел с дробной частью.
- Только для неотрицательных целых чисел. — верно
- Только для отрицательных целых чисел.
- Для любых целых чисел, включая отрицательные.
> Беззнаковый формат не содержит разряда под знак и предназначен исключительно для неотрицательных величин.

**Для каких из перечисленных объектов согласно тексту используется беззнаковое представление?**
- Финансовые операции с возможным отрицательным балансом.
- Адреса ячеек памяти, счётчики и размеры изображений в пикселях. — верно
- Координаты перемещения объекта в противоположных направлениях.
- Значения температуры воздуха в градусах Цельсия за год.
> Адреса, количество символов, даты, время и размеры графических изображений принимают только неотрицательные значения.

**Какая формула позволяет определить максимальное значение неотрицательного целого числа в $n$-разрядном представлении?**
- $2^{n+1} - 1$
- $2^n$
- $2^{n-1}$
- $2^n - 1$ — верно
> Максимальное значение достигается при установке всех $n$ битов в единицу, что соответствует $2^n - 1$.

**Чему равно минимальное значение целого неотрицательного числа в $n$-разрядном беззнаковом представлении?**
- 0 — верно
- $-1$
- 1
- $-2^{n-1}$
> Минимальное значение беззнакового формата достигается при записи нулей во все $n$ разрядов памяти и равно нулю.

**Каково максимальное значение беззнакового целого числа в 8-разрядном представлении?**
- 511
- 127
- 255 — верно
- 256
> Подставив $n = 8$ в формулу $2^n - 1$, получаем $2^8 - 1 = 256 - 1 = 255$.

**Каково максимальное значение беззнакового целого числа в 16-разрядном представлении?**
- 65 535 — верно
- 32 767
- 65 536
- 131 071
> Для $n = 16$ максимальное число рассчитывается как $2^{16} - 1 = 65 536 - 1 = 65 535$.

**Каков алгоритм получения компьютерного представления беззнакового целого числа?**
- Перевести число в двоичную систему счисления и дополнить полученный результат слева нулями до нужной разрядности. — верно
- Инвертировать все разряды двоичной записи и прибавить единицу.
- Перевести число в двоичную систему счисления и дополнить результат справа нулями до нужной разрядности.
- Записать знак числа в старший разряд и дополнить число нулями справа.
> При беззнаковом представлении число переводится в двоичный код, а недостающие старшие (левые) разряды заполняются нулями.

**Как выглядит десятичное число $53_{10}$ в восьмиразрядном беззнаковом представлении?**
- 11010100
- 10110101
- 00110101 — верно
- 00011010
> Число $53_{10}$ в двоичной системе равно $110101_2$. Дополняя его слева двумя нулями до 8 разрядов, получаем 00110101.

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

## 2. Числа со знаком: прямой и дополнительный код

*Куда в памяти девается минус*

В ячейке нет места для значка «−»: там только нули и единицы. Значит, знак тоже нужно закодировать нулём или единицей. Для этого один разряд отдают под знак.

**Прямой код**

**Прямой код** — представление чисел со знаком, в котором самый старший (левый) разряд отводится под знак числа (0 — положительное, 1 — отрицательное), а остальные разряды — под само число.

**Старший разряд — «переключатель плюс/минус»**

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

**Как запомнить:** «Слева ноль — плюс, слева единица — минус». Ноль по форме похож на «пусто, ничего не добавлено», единица — на чёрточку минуса.

**Пример: Число $5$ и $-5$ в 8-разрядной ячейке в прямом коде**

1. Число $5$ в двоичной системе: $101_2$. Дополняем нулями до 7 разрядов под число: $0000101$.
2. Для $+5$ старший разряд равен $0$: $00000101$.
3. Для $-5$ старший разряд равен $1$: $10000101$.
4. Величина у них одинаковая, отличается только левый бит.

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

**Дополнительный код**

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

Итак, в памяти: положительные числа хранятся в прямом коде, отрицательные — в дополнительном. Знаковый бит по-прежнему: $0$ — плюс, $1$ — минус. Смысл дополнительного кода — экономия: процессору не нужна отдельная схема вычитания, ему хватает сложения.

**Вычитание превращается в сложение**

Это как сказать «отойти на 3 шага назад» вместо «вычесть 3 шага»: то же самое действие, но выполняется знакомым движением. Компьютер вместо «вычесть число» прибавляет специально подготовленный отрицательный код.

**Как запомнить:** «Положительное — прямой, отрицательное — дополнительный». Первые буквы: П — П, О — Д: положительное прямо, отрицательное дополняем.

**Неправильно:** В беззнаковой и знаковой ячейке из 8 разрядов помещается одинаково большое число: $255$.
**Правильно:** В беззнаковой $255$ помещается, потому что все 8 разрядов отданы под число. Если старший разряд занят под знак, под число остаётся меньше разрядов.

**Проверь себя:** Старший разряд числа в прямом коде равен $1$. Что это значит?
**Ответ:** Число отрицательное. Остальные разряды хранят его величину.

### Проверь себя

**Какой разряд отводится под знак числа при представлении целых чисел со знаком?**
- Любой произвольный разряд в середине ячейки.
- Знаковый разряд хранится в отдельной 8-битной ячейке.
- Самый старший (левый) разряд. — верно
- Самый младший (правый) разряд.
> При представлении чисел со знаком самый старший (крайний левый) разряд всегда отводится под знаковый бит.

**Какие значения помещаются в знаковый разряд для положительных и отрицательных чисел соответственно?**
- 1 — для чисел кратных двум, 0 — для нечетных чисел.
- 1 — если число положительное, 0 — если число отрицательное.
- 0 — для любого целого числа независимо от знака.
- 0 — если число положительное, 1 — если число отрицательное. — верно
> В компьютере принято соглашение: 0 в старшем разряде обозначает плюс (положительное число), 1 — минус (отрицательное).

**Что такое прямой код целого числа?**
- Код, в котором все нули заменены единицами, а единицы — нулями.
- Двоичная запись числа, дополненная нулями справа.
- Представление, при котором самый старший разряд хранит знак числа, а остальные разряды — само число. — верно
- Запись числа в экспоненциальной форме с плавающей запятой.
> Прямым кодом называется представление, где старший бит отвечает за знак (0 или 1), а остальные разряды хранят двоичный код модуля числа.

**Для чего в компьютере используются прямые коды?**
- Для выполнения арифметических операций с отрицательными числами.
- Для хранения порядка вещественных чисел.
- Для хранения положительных чисел в запоминающих устройствах и выполнения операций с положительными числами. — верно
- Исключительно для кодирования символов текста.
> Прямой код применяется для хранения положительных чисел и выполнения арифметических действий над ними.

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

## 3. Вещественные числа: экспоненциальная форма

*Как уместить и очень большое, и очень маленькое*

Целые числа хранить просто. А как записать расстояние до звезды или размер молекулы? Записать их со всеми нулями в ячейку не получится. Поэтому вещественные числа записывают иначе: отдельно «сколько цифр» и отдельно «где стоит запятая».

**Экспоненциальная форма записи числа**

**Экспоненциальная форма записи числа** — представление вещественного числа в виде $A = \pm m \cdot q^p$, где $m$ — мантисса, $q$ — основание системы счисления, $p$ — порядок числа.

**Запись вещественного числа**

$A = \pm m \cdot q^p$

где $A$ — вещественное число, $m$ — мантисса числа, $q$ — основание системы счисления, $p$ — порядок числа.

**Мантисса — «цифры», порядок — «где запятая»**

Порядок работает как регулятор масштаба на карте. Сами очертания (мантисса) остаются теми же, а знак и величина порядка задают направление и размер сдвига запятой: при $p > 0$ запятая сдвигается вправо на $p$ разрядов, при $p < 0$ — влево на $|p|$ разрядов. Чем больше $|p|$, тем дальше сдвигается запятая: положительный порядок увеличивает число, отрицательный — уменьшает его.

**Как запомнить:** «Порядок — про размах, мантисса — про точность». Для десятичной системы вместо «умножить на десять в степени» пишут букву $E$: запись $2.5E4$ читается как $2.5 \cdot 10^4$.

**Пример: Записываем числа в экспоненциальной форме**

1. Число $25000$. Берём $q = 10$. Записываем $25000 = 2.5 \cdot 10^4$: мантисса $m = 2.5$, порядок $p = 4$.
2. В компьютерной записи это $2.5E4$.
3. Число $0.00012$. Двигаем запятую вправо на 4 знака и компенсируем порядком: $0.00012 = 1.2 \cdot 10^{-4}$, то есть $1.2E{-4}$.
4. Здесь мантисса $m = 1.2$, порядок $p = -4$ (отрицательный — число меньше единицы).

В памяти компьютера вещественное число хранится в ячейке из 32 или 64 разрядов. Ячейка делится на четыре части: знак мантиссы, знак порядка, порядок и мантисса. Два знака нужны потому, что в числе есть два независимых «плюс/минус»: сам знак числа и знак степени (число больше или меньше единицы).

**Целые и вещественные числа в памяти**

| Признак | Целые числа | Вещественные числа |
| --- | --- | --- |
| Размер ячейки, бит | 8, 16, 32, 64 | 32, 64 |
| Что хранится | двоичное число (со знаком или без) | знак мантиссы, знак порядка, порядок, мантисса |
| Что ограничивает число | количество разрядов $n$ | диапазон: разряды порядка; точность: разряды мантиссы |
| Когда применять | считаем предметы, номера | измерения, очень большие и малые величины |

**Проверь себя:** Хочешь, чтобы компьютер мог хранить числа большего масштаба, но не «терять» цифры точности. Какую часть ячейки нужно увеличивать для диапазона, а какую — для точности?
**Ответ:** Диапазон определяется количеством разрядов порядка, а точность — количеством разрядов мантиссы.

### Проверь себя

**В какой форме записывается любое вещественное число $A$ в компьютере?**
- Только в форме дополнительного кода без мантиссы.
- В экспоненциальной форме: $A = \pm m \cdot q^p$. — верно
- В виде таблицы знаков и разрядов без основания системы.
- В виде беззнакового двоичного целого кода.
> Вещественные числа представляются в экспоненциальной форме с использованием мантиссы $m$, основания системы $q$ и порядка $p$.

**Что обозначает переменная $m$ в формуле экспоненциальной формы записи вещественного числа $A = \pm m \cdot q^p$?**
- Мантисса числа. — верно
- Количество разрядов в ячейке памяти.
- Порядок числа.
- Основание системы счисления.
> В формуле экспоненциальной записи $m$ обозначает мантиссу — дробную часть числа, содержащую его значащие цифры.

**Что обозначает переменная $p$ в формуле экспоненциальной формы записи вещественного числа $A = \pm m \cdot q^p$?**
- Основание системы счисления.
- Порядок числа. — верно
- Разрядность знакового бита.
- Мантисса числа.
> Буквой $p$ в экспоненциальной форме обозначается порядок числа, определяющий степень основания $q$.

**Что обозначает символ «E» при калькуляторной записи вещественных чисел (например, $4.72\text{E}+8$)?**
- Единичную точность вычислений.
- Основание десятичной системы счисления («умножить на десять в степени»). — верно
- Сообщение об ошибке переполнения памяти (Error).
- Основание двоичной системы счисления.
> Символ E заменяет основание 10 и читается как «умножить на десять в степени» (в данном случае $4,72 \cdot 10^8$).

**Какому условию удовлетворяет нормализованная мантисса вещественного числа?**
- Она всегда оканчивается на три нуля.
- Она записывается как правильная дробь, имеющая после запятой цифру, отличную от нуля. — верно
- Она записывается как целое число, не содержащее нулей.
- Она записывается как неправильная дробь с целой частью, равной двум.
> Для единообразия нормализованная мантисса берется в виде правильной дроби с первой ненулевой цифрой сразу после запятой (например, $0,472$).

**Сколько разрядов обычно может занимать вещественное число в памяти компьютера согласно материалу параграфа?**
- 10 или 20 разрядов.
- 32 или 64 разряда. — верно
- 8 или 16 разрядов.
- 128 или 256 разрядов.
> В компьютерной памяти под вещественные числа обычно отводится 32 разряда (одинарная точность) или 64 разряда (двойная точность).

**Какие 4 компонента выделяются при хранении вещественного числа в ячейке памяти компьютера?**
- Целая часть, дробная часть, делитель и остаток.
- Адрес ячейки, длина поля, значение и контрольная сумма.
- Знак мантиссы, знак порядка, порядок и мантисса. — верно
- Прямой код, обратный код, дополнительный код и сдвиг.
> Для полного описания вещественного числа в ячейке выделяются поля для знака мантиссы, знака порядка, самого порядка и мантиссы.

**Чем определяется диапазон представления вещественных чисел в компьютере?**
- Количеством разрядов, отведённых для хранения мантиссы.
- Общим объемом внешней памяти компьютера.
- Количеством разрядов, отведённых для хранения порядка числа. — верно
- Наличием знакового разряда целого числа.
> Разрядность порядка определяет максимальную и минимальную степень основания, т. е. границы диапазона чисел.

**Чем определяется точность представления вещественных чисел в компьютере?**
- Использованием прямого кода вместо дополнительного.
- Количеством разрядов, отведённых для хранения мантиссы. — верно
- Количеством разрядов, отведённых для хранения порядка.
- Тактовой частотой процессора.
> Чем больше разрядов выделено под мантиссу, тем больше значащих цифр числа сохраняется, что определяет точность.

**Как соотносятся алгоритмы обработки вещественных и целых чисел по своей трудоёмкости?**
- Алгоритмы обработки вещественных чисел более трудоёмки по сравнению с алгоритмами обработки целых чисел. — верно
- Вещественные числа не обрабатываются процессорными алгоритмами.
- Алгоритмы обработки целых чисел более трудоёмки, чем вещественных.
- Трудоёмкость алгоритмов обработки целых и вещественных чисел абсолютно одинакова.
> Обработка вещественных чисел требует выполнения действий отдельно над мантиссами и порядками, что делает эти алгоритмы более трудоёмкими.

## Ключевые термины

- **Бит (разряд)** — элемент ячейки памяти с двумя состояниями, 0 и 1
- **Беззнаковое представление** — все разряды ячейки отдают под значение неотрицательного целого числа
- **Прямой код** — старший разряд — знак числа, остальные — само число
- **Дополнительный код** — представление отрицательных целых чисел, заменяющее вычитание сложением
- **Экспоненциальная форма** — запись вещественного числа $A = \pm m \cdot q^p$
- **Мантисса и порядок** — $m$ — цифры числа, $p$ — степень основания $q$

## Итог

- Бит — один разряд ячейки с двумя состояниями, 0 и 1; ячейки бывают из 8, 16, 32 и 64 разрядов.
- Наибольшее беззнаковое число в ячейке из $n$ разрядов: $N_{max} = 2^n - 1$.
- В прямом коде старший разряд — знак: $0$ — плюс, $1$ — минус; отрицательные числа хранятся в дополнительном коде, он заменяет вычитание сложением.
- Вещественное число записывают как $A = \pm m \cdot q^p$: $m$ — мантисса, $p$ — порядок.
- Диапазон вещественного числа определяют разряды порядка, точность — разряды мантиссы.

## Шпаргалка

### Формулы представления чисел

- **$N_{max} = 2^n - 1$** — наибольшее беззнаковое целое в $n$ разрядах
- **$A = \pm m \cdot q^p$** — экспоненциальная форма вещественного числа

### Опорные значения без знака

- **8 бит** — от $0$ до $255$
- **16 бит** — от $0$ до $65535$
- **32 бита** — от $0$ до $4294967295$
- **Старший разряд $0$** — положительное число
- **Старший разряд $1$** — отрицательное число

### Что есть что

- **Прямой код** — старший разряд — знак, остальные — число
- **Дополнительный код** — для отрицательных, заменяет вычитание сложением
- **$m$** — мантисса
- **$p$** — порядок числа
- **$E$** — «умножить на десять в степени»

### Целые и вещественные

| Признак | Целые | Вещественные |
| --- | --- | --- |
| Размер ячейки, бит | 8, 16, 32, 64 | 32, 64 |
| Что хранится | двоичное число | знаки, порядок, мантисса |
| Диапазон задаёт | число разрядов $n$ | разряды порядка |
| Точность задаёт | — | разряды мантиссы |

## Любопытное

- В 64-разрядной ячейке наибольшее беззнаковое целое — $18\,446\,744\,073\,709\,551\,615$: всего 20 цифр в десятичной записи.
- Запись $2.5E4$ в калькуляторах и программах — это просто $2.5 \cdot 10^4$; буква $E$ заменяет «умножить на десять в степени».
