
Кому будет полезна эта статья:
Ключевые практические выводы из статьи
Если вы готовитесь к экзаменам и хотите разобраться не только в системах счисления, но и в смежных темах — обратите внимание на материалы по подготовке к ЕГЭ по математике профильного уровня: там собраны структурированные планы, разборы типовых заданий и методики работы с трудными темами — всё, что нужно для уверенного результата.
Позиционные системы счисления — это метод представления чисел, в котором каждая цифра имеет значение в зависимости от её позиции. Простейший пример позиционной системы — десятичная система, с которой мы сталкиваемся ежедневно. Однако существуют и другие системы, такие как двоичная, восьмеричная и шестнадцатеричная.
Вес позиции равен основанию системы, возведённому в степень, соответствующую номеру позиции. Это принципиально отличает позиционные системы от непозиционных — например, от римской, где X всегда означает 10, вне зависимости от места в записи.
Основание системы (radix) — количество различных символов (цифр), используемых в данной системе. Оно же является основанием степени при вычислении весов позиций. Минимальное теоретически возможное основание позиционной системы равно 2 — именно поэтому двоичная система является минимальной полноценной позиционной системой.
Разряд и позиция — порядковый номер места цифры в записи числа. Позиции нумеруются справа налево, начиная с нуля для целой части и слева направо с −1 для дробной.
Вес позиции — множитель, на который умножается цифра. Для позиции с номером i в системе с основанием q вес равен qi.
Алфавит цифр — упорядоченное множество символов, используемых в данной системе. Мощность алфавита всегда равна основанию системы.
Полиномиальная форма записи — представление числа в виде суммы произведений цифр на веса соответствующих позиций.
$$1234 = 1 \cdot 10^3 + 2 \cdot 10^2 + 3 \cdot 10^1 + 4 \cdot 10^0 = 1000 + 200 + 30 + 4$$
| Цифра | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| Позиция (i) | 3 | 2 | 1 | 0 |
| Вес (10i) | 1000 | 100 | 10 | 1 |
| Вклад | 1000 | 200 | 30 | 4 |
| Система | Основание | Символы (алфавит) | Где используется |
|---|---|---|---|
| Двоичная | 2 | 0, 1 | Электроника, процессоры, память ЭВМ |
| Восьмеричная | 8 | 0, 1, 2, 3, 4, 5, 6, 7 | Unix-права доступа, ранние ЭВМ |
| Десятичная | 10 | 0–9 | Повседневная жизнь, финансы, наука |
| Шестнадцатеричная | 16 | 0–9, A, B, C, D, E, F | Программирование, цвета CSS, адресация |
Это наиболее распространенная система, которую мы используем для обыденных вычислений. Она имеет 10 символов (цифр): от 0 до 9. В этой системе каждая позиция числа представляет степень десятки.
Пример:
$$237 = 2 \times 10^2 + 3 \times 10^1 + 7 \times 10^0$$
Десятичная система счисления использует индо-арабские цифры от 0 до 9 и основание 10. Каждая цифра в числе имеет вес, равный степени десятки, соответствующей её позиции. Именно поэтому одна и та же цифра «3» означает разное: в числе 300 — триста, в числе 30 — тридцать, в числе 3 — три.
$$347 = 3 \cdot 10^2 + 4 \cdot 10^1 + 7 \cdot 10^0 = 300 + 40 + 7$$
Для дробных разрядов используются отрицательные степени основания:
$$0{,}25 = 2 \cdot 10^{-1} + 5 \cdot 10^{-2} = 0{,}2 + 0{,}05$$
Десятичная система — это «точка отсчёта» при переводах между другими системами. Стандартный маршрут: любая система → десятичная → любая система. Это позволяет использовать привычную арифметику на промежуточном этапе.
Совет эксперта: Частая ошибка — путать «число цифр в записи» с «основанием системы». Запись числа «347» содержит три цифры, но это не значит, что система трёхзначная. Основание всегда определяется размером алфавита: в десятичной системе ровно 10 различных символов (0–9) — это и есть основание.
В информатике часто используется двоичная система счисления, так как компьютеры работают на основе двоичной логики (0 и 1). В этой системе всего два символа: 0 и 1.
Пример:
$$1101_2 = 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 13_{10}$$
Двоичная система счисления (бинарная система) использует только два символа: 0 и 1. Выбор именно двух состояний обусловлен физикой: электронные компоненты — триггеры, логические вентили, ячейки памяти — устойчиво различают два уровня напряжения («есть сигнал» / «нет сигнала»). Один разряд двоичного числа называется битом, восемь битов образуют байт.
$$1011_2 = 1 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 1 \cdot 2^0 = 8 + 0 + 2 + 1 = 11_{10}$$
| Степень | 2⁰ | 2¹ | 2² | 2³ | 2⁴ | 2⁵ | 2⁶ | 2⁷ |
|---|---|---|---|---|---|---|---|---|
| Значение | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 |
| Степень | 2⁸ | 2⁹ | 2¹⁰ | 2¹¹ | 2¹² | 2¹³ | 2¹⁴ | 2¹⁵ |
|---|---|---|---|---|---|---|---|---|
| Значение | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 | 32768 |
$$101{,}11_2 = 1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0 + 1 \cdot 2^{-1} + 1 \cdot 2^{-2} = 4 + 0 + 1 + 0{,}5 + 0{,}25 = 5{,}75_{10}$$
Двоичная система — основа машинного кода, булевой алгебры и работы всех современных процессоров. Побитовые операции (AND, OR, XOR, сдвиги) реализуются непосредственно на аппаратном уровне через логические вентили. Адресация памяти также строится на степенях двойки: 210 = 1024 байта = 1 килобайт.
— Перепутать порядок разрядов: при переводе методом деления остатки читаются снизу вверх, не сверху вниз.
— Забыть перевести дробную часть: целая и дробная части переводятся разными алгоритмами и должны обрабатываться отдельно.
Эта система имеет 8 символов: от 0 до 7. Ранее восьмеричная система часто использовалась в программировании, однако сейчас она менее популярна.
Пример:
$$347_8 = 3 \times 8^2 + 4 \times 8^1 + 7 \times 8^0 = 231_{10}$$
Восьмеричная система использует цифры 0–7 (основание 8 = 2³). Ключевое свойство: любая восьмеричная цифра точно соответствует трём двоичным разрядам, что делает перевод между этими системами мгновенным — без промежуточных вычислений.
$$347_8 = 3 \cdot 8^2 + 4 \cdot 8^1 + 7 \cdot 8^0 = 192 + 32 + 7 = 231_{10}$$
Каждые 3 бита двоичного числа заменяются одной восьмеричной цифрой (и наоборот). Разбивать нужно от точки дроби влево для целой части и вправо для дробной, при необходимости дополняя крайние группы нулями.
Пример: $110\ 111\ 010_2 \to 6\ 7\ 2_8 = 672_8$
Восьмеричная система применяется в Unix/Linux для задания прав доступа к файлам. Команда chmod 755 означает: владелец — 7 (111₂ = чтение + запись + выполнение), группа — 5 (101₂), остальные — 5. Это прямое использование трёхбитового кодирования.
Совет эксперта: Критическая ошибка при работе с восьмеричной системой — использование цифр 8 и 9. В восьмеричной системе их не существует: алфавит заканчивается на 7. Если в задаче встречается «цифра 8» в восьмеричной записи — это признак ошибки в условии или в решении.
Шестнадцатеричная система состоит из 16 символов: 0–9 и A–F, где A представляет 10, B — 11 и так далее до F, представляющего 15. Эта система часто используется в программировании, особенно при работе с цветами и адресами памяти.
Пример:
$$2A3_{16} = 2 \times 16^2 + 10 \times 16^1 + 3 \times 16^0 = 675_{10}$$
Шестнадцатеричная система (hex) использует 16 символов: цифры 0–9 и буквы A–F, где буквы обозначают числовые значения 10–15.
| Десятичная | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Hex | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
$$1A3_{16} = 1 \cdot 16^2 + 10 \cdot 16^1 + 3 \cdot 16^0 = 256 + 160 + 3 = 419_{10}$$
(Здесь A = 10 — подставляем числовое значение, а не букву.)
Каждые 4 бита (тетрада, или ниббл) двоичного числа однозначно соответствуют одной шестнадцатеричной цифре. Это делает шестнадцатеричную систему идеальным «компактным» представлением двоичных данных.
Пример: $1010\ 0011_2 \to A3_{16}$
— Считать, что A = 11, B = 12 и т.д. — нет: A = 10, B = 11, ..., F = 15.
— При раскрытии полиномиальной формы умножать на 10 вместо 16.
Алгоритм: запишите число в полиномиальной форме, умножьте каждую цифру на соответствующую степень основания и сложите результаты.
Пример 1: целое двоичное число
$$1011_2 \to 1 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 1 \cdot 2^0 = 8 + 0 + 2 + 1 = 11_{10}$$
Пример 2: двоичное число с дробной частью
$$101{,}101_2 \to 1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0 + 1 \cdot 2^{-1} + 0 \cdot 2^{-2} + 1 \cdot 2^{-3} = 4 + 0 + 1 + 0{,}5 + 0 + 0{,}125 = 5{,}625_{10}$$
Пример 3: шестнадцатеричное число
$$A2F_{16} \to 10 \cdot 16^2 + 2 \cdot 16^1 + 15 \cdot 16^0 = 2560 + 32 + 15 = 2607_{10}$$
Схема Горнера позволяет ускорить вычисления для длинных чисел: $A2F_{16} = ((10 \cdot 16 + 2) \cdot 16 + 15) = (162 \cdot 16 + 15) = 2592 + 15 = 2607_{10}$. Тот же результат, но без вычисления больших степеней вручную.
Алгоритм последовательного деления:
Пример: 45₁₀ → двоичная
| Делимое | Частное | Остаток (разряд) |
|---|---|---|
| 45 ÷ 2 | 22 | 1 ← младший |
| 22 ÷ 2 | 11 | 0 |
| 11 ÷ 2 | 5 | 1 |
| 5 ÷ 2 | 2 | 1 |
| 2 ÷ 2 | 1 | 0 |
| 1 ÷ 2 | 0 | 1 ← старший |
Читаем остатки снизу вверх: $\mathbf{101101_2}$. Проверка: $32 + 8 + 4 + 1 = 45$ ✓
Пример: 255₁₀ → шестнадцатеричная
$255 \div 16 = 15$, остаток $15\ (F)$
$15 \div 16 = 0$, остаток $15\ (F)$
Результат (снизу вверх): $\mathbf{FF_{16}}$ ✓
Алгоритм последовательного умножения:
Пример: 0,625₁₀ → двоичная
| Дробная часть | × 2 | Результат | Целая часть (разряд) |
|---|---|---|---|
| 0,625 | × 2 | 1,25 | 1 ← первый после запятой |
| 0,25 | × 2 | 0,50 | 0 |
| 0,50 | × 2 | 1,00 | 1 |
Результат: $\mathbf{0{,}101_2}$. Проверка: $0{,}5 + 0 + 0{,}125 = 0{,}625$ ✓
Важная ловушка: 0,1₁₀ → двоичная
Число 0,1 в десятичной системе не представимо точно в двоичной — получается бесконечная периодическая дробь 0,000110011... Именно поэтому в компьютерах при работе с числами с плавающей точкой возникают ошибки округления.
Пример: $11010110_2$ → восьмеричная и шестнадцатеричная
Разбиваем на триады по 3 бита (справа): $11\ |\ 010\ |\ 110$ → дополняем старший: $011\ |\ 010\ |\ 110$ → $3\ |\ 2\ |\ 6 = \mathbf{326_8}$
Разбиваем на тетрады по 4 бита (справа): $1101\ |\ 0110$ → $D\ |\ 6 = \mathbf{D6_{16}}$
Таблица триад: двоичная ↔ восьмеричная
| Восьмеричная | Триада (двоичная) |
|---|---|
| 0 | 000 |
| 1 | 001 |
| 2 | 010 |
| 3 | 011 |
| 4 | 100 |
| 5 | 101 |
| 6 | 110 |
| 7 | 111 |
Таблица быстрого соответствия (0–15)
| Десятичная | Двоичная (тетрада) | Восьмеричная | Шестнадцатеричная |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
В задании 14 ЕГЭ часто встречается тип задач, в которых нужно найти количество определённых цифр в числе вида $N^x - N^y$, записанном в системе с основанием $N$. Прямой перевод таких чисел в десятичную невозможен (показатели степени слишком велики), поэтому применяются специальные алгоритмические приёмы.
Правило №1 — Как записывается $N^k$ в системе с основанием $N$
Число $N^k$ в системе с основанием $N$ — это единица, за которой следуют $k$ нулей. По аналогии с десятичной системой: $10^3 = 1000_{10}$, $10^5 = 100000_{10}$.
Примеры:
Правило №2 — Как вычесть $N^y$ из $N^x$ в системе с основанием $N$ ($x > y$)
$N^x$ в системе с основанием $N$ — это 1, затем $x$ нулей. Чтобы вычесть $N^y$ (то есть 1 с $y$ нулями), нужно занять единицу из позиции $x$, «разменяв» её. При этом:
Итоговая структура числа $N^x - N^y$ в системе с основанием $N$:
Вопрос: Сколько цифр «6» содержится в записи числа $7^{25} - 7^3$ в семеричной системе счисления?
1 000...0₇ (25 нулей).
1000₇.
Проверка на маленьких числах
Убедимся, что правило работает. Возьмём $7^2 - 7^0 = 49 - 1 = 48_{10}$.
$48 \div 7 = 6$, остаток $6$; $6 \div 7 = 0$, остаток $6$ → $\mathbf{66_7}$.
По формуле: $x = 2$, $y = 0$, цифр $(N-1=6)$: $2 - 0 - 1 = 1$; позиция $y=0$ → 0; нулей ниже: 0 штук. Итог: $6\ 0_7$ — нет, подождём: запись $66_7 = 6 \cdot 7 + 6 = 48$ ✓, а наша формула даёт позицию 1 → 6, позицию 0 → ноль?
Уточнение: позиция $y$ заполняется нулём только при $y \geq 1$. При $y = 0$ вычитаемое совпадает с позицией 0, и там остаётся $(N - 1) = 6$, а «нулей ниже» нет. В задаче $7^{25} - 7^3$, где $y = 3 \geq 1$, формула работает в полном объёме. Для $y = 0$ итог: $(x - 1)$ цифр $(N-1)$ без нуля — например $7^2 - 7^0 = 66_7$ (две шестёрки) ✓.
В задачах ЕГЭ и ОГЭ часто спрашивают: «В какой наименьшей системе счисления возможна запись числа ...?» или «Найдите наименьшее основание, при котором запись числа является корректной». Это требует понимания одного ключевого принципа.
Главное правило: основание и максимальная цифра
Основание системы счисления всегда строго больше максимальной цифры, встречающейся в записи числа.
Формула: $q_{\min} = \max(\text{цифры}) + 1$
Пример: в числе 3072 максимальная цифра — 7, следовательно минимальное основание $= 7 + 1 = \mathbf{8}$ (восьмеричная система).
Задача A. В каком наименьшем основании корректна запись числа 5132?
Максимальная цифра: 5. Минимальное основание: $5 + 1 = \mathbf{6}$.
Задача B. В каком наименьшем основании корректна запись числа $A0F_{16}$?
Максимальная «цифра»: F = 15. Минимальное основание: $15 + 1 = \mathbf{16}$. (Шестнадцатеричная запись корректна, и это и есть минимум.)
Задача C. Найдите наименьшее основание системы, в которой запись числа $X$ оканчивается на 0.
Число оканчивается на 0 тогда и только тогда, когда оно делится на основание. Следовательно, нужно найти наименьший делитель числа $X$, больший 1 — это его наименьший простой делитель. Например, для $X = 15$: делители > 1: 3, 5, 15. Минимальное основание = $\mathbf{3}$. Проверка: $15_{10} = 120_3$ (заканчивается на 0) ✓.
| Ошибка | Почему возникает | Как исправить |
|---|---|---|
| Остатки при делении читаются сверху вниз | Интуитивное желание читать в порядке записи | Запомнить: результат — это остатки снизу вверх. Последний остаток — старший разряд |
| Использование цифры ≥ основания | Путаница между системами (например, пишут 8 в восьмеричной) | Перед решением выписать алфавит системы и сверяться с ним |
| Перевод только целой части | Упускают дробную часть как «сложную» | Всегда делить число на две части: целую и дробную — и переводить отдельно |
| Ожидание точного перевода дроби | Не знают о периодических двоичных дробях | Задавать точность (количество знаков после запятой) и указывать приближённость результата |
| A = 11, B = 12 в шестнадцатеричной | Путают порядковый номер буквы в алфавите с числовым значением | Выучить таблицу: A=10, B=11, C=12, D=13, E=14, F=15 |
| Умножение на 10 вместо основания при раскрытии полиномиальной формы | Автоматизм из десятичной системы | Всегда явно записывать основание рядом с числом и проверять его перед умножением |
| Неверное определение минимального основания | Принимают за основание само число или количество цифр в записи | Использовать правило: $q_{\min} = \max(\text{цифры в записи}) + 1$ |
Как проверить перевод: выполните обратный перевод полученного результата в исходную систему. Если числа совпали — перевод верен. Для дополнительной проверки раскройте полиномиальную форму и вычислите сумму вручную.
Задача 1. Перевести $13_{10}$ в двоичную систему.
$13 \div 2 = 6$, ост. 1; $6 \div 2 = 3$, ост. 0; $3 \div 2 = 1$, ост. 1; $1 \div 2 = 0$, ост. 1. Читаем снизу вверх: $\mathbf{1101_2}$. Проверка: $8 + 4 + 0 + 1 = 13$ ✓
Задача 2. Перевести $1101_2$ в десятичную систему.
$1 \cdot 2^3 + 1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0 = 8 + 4 + 0 + 1 = \mathbf{13}_{10}$
Задача 3. Перевести $77_8$ в десятичную систему.
$7 \cdot 8^1 + 7 \cdot 8^0 = 56 + 7 = \mathbf{63}_{10}$
Задача 4. Перевести $0{,}375_{10}$ в двоичную систему.
$0{,}375 \times 2 = 0{,}75 \to 0$; $0{,}75 \times 2 = 1{,}5 \to 1$; $0{,}5 \times 2 = 1{,}0 \to 1$. Результат: $\mathbf{0{,}011_2}$. Проверка: $0 + 0{,}25 + 0{,}125 = 0{,}375$ ✓
Задача 5. Перевести $10110111_2$ в шестнадцатеричную (методом тетрад).
Разбиваем по 4 бита (тетрады) справа: $1011\ |\ 0111$ → $B\ |\ 7 = \mathbf{B7_{16}}$. Проверка: $11 \cdot 16 + 7 = 176 + 7 = 183_{10}$; двоичное: $128 + 32 + 16 + 4 + 2 + 1 = 183$ ✓
Задача 6. Перевести $2BC_{16}$ в десятичную систему.
$2 \cdot 16^2 + 11 \cdot 16^1 + 12 \cdot 16^0 = 512 + 176 + 12 = \mathbf{700}_{10}$
Задача 7. Перевести $0{,}1_{10}$ в двоичную систему, показав цикличность.
$0{,}1 \times 2 = 0{,}2 \to 0$; $0{,}2 \times 2 = 0{,}4 \to 0$; $0{,}4 \times 2 = 0{,}8 \to 0$; $0{,}8 \times 2 = 1{,}6 \to 1$; $0{,}6 \times 2 = 1{,}2 \to 1$; $0{,}2 \times 2 = 0{,}4 \to 0$ — цикл вернулся к 0,2. Результат: $\mathbf{0{,}(0011)_2}$ — периодическая дробь с периодом 0011. Точного представления в двоичной системе не существует.
Задача 8. Перевести $347{,}25_{10}$ в восьмеричную (целая и дробная части).
Целая часть: $347 \div 8 = 43$, ост. 3; $43 \div 8 = 5$, ост. 3; $5 \div 8 = 0$, ост. 5. Читаем снизу вверх: $533_8$.
Дробная часть: $0{,}25 \times 8 = 2{,}0 \to 2$. Дробная часть равна нулю — конец.
Результат: $\mathbf{533{,}2_8}$. Проверка: $5 \cdot 64 + 3 \cdot 8 + 3 \cdot 1 + 2 \cdot (1/8) = 320 + 24 + 3 + 0{,}25 = 347{,}25$ ✓
Задача 9 (тип ЕГЭ-2026). Сколько цифр «4» содержится в записи числа $5^{12} - 5^2$ в пятеричной системе счисления?
Применяем правило: $N = 5$, $x = 12$, $y = 2$. Максимальная цифра $(N-1) = 4$. Количество таких цифр: $x - y - 1 = 12 - 2 - 1 = \mathbf{9}$. За ними следует 0 (позиция $y$), затем $y = 2$ нуля.
Запись числа в пятеричной системе: $444444444\ 0\ 00_5$ (9 четвёрок, затем 0, затем два нуля).
Ответ: цифра «4» встречается 9 раз.
Задача 10 (определение минимального основания). В каком наименьшем основании система счисления корректна для числа «3A7»?
Цифры в записи: 3, A (=10), 7. Максимальная цифра: A = 10. Минимальное основание: $10 + 1 = \mathbf{11}$. Запись «3A7» корректна начиная с одиннадцатеричной системы.
Современные языки программирования поддерживают запись числовых литералов в разных системах счисления непосредственно в коде: двоичные (0b1010), восьмеричные (0o17), шестнадцатеричные (0xFF).
Побитовые операции — AND (&), OR (|), XOR (^), сдвиги (<<, >>) — работают непосредственно с двоичным представлением числа и позволяют эффективно управлять отдельными битами. Типичный пример: проверка флагов доступа (permissions & 0x04 != 0 — проверяем, установлен ли третий бит).
Цвета в веб-дизайне: CSS-запись #FF5733 — это три последовательных байта в шестнадцатеричном формате: красный (FF = 255), зелёный (57 = 87), синий (33 = 51). Изменяя любой из байтов, дизайнер управляет соответствующим цветовым каналом.
Логические уровни 0 и 1 соответствуют физическим состояниям электронных компонентов: низкому и высокому напряжению. Триггеры сохраняют один бит информации, переключаясь между двумя устойчивыми состояниями. Логические вентили реализуют операции булевой алгебры над битами — AND, OR, NOT — и из них строятся все более сложные вычислительные устройства.
Восьмеричная система была популярна на ранних ЭВМ (PDP, ранние Unix-машины) именно из-за прямого соответствия триадам: 12-битные и 24-битные слова удобно делились на четыре или восемь восьмеричных цифр.
Позиционные системы с произвольным основанием используются в теории кодирования: контрольные суммы (CRC), хэш-функции (MD5, SHA — результат обычно выводится в шестнадцатеричном виде). Сжатие данных работает с вероятностными моделями, где двоичное представление — минимально избыточный код для источника с двумя равновероятными символами (теорема Шеннона).
Знак-величина: старший бит — знак (0 = плюс, 1 = минус), остальные — абсолютное значение. Недостаток: два представления нуля (+0 и −0), усложнённая арифметика.
Дополнение до единицы (one's complement): отрицательное число получается инвертированием всех битов положительного. Проблема двух нулей сохраняется.
Дополнение до двух (two's complement): стандарт всех современных процессоров. Алгоритм получения: инвертировать все биты положительного числа и прибавить 1.
Пример: $-5$ в 8-битном дополнении до двух:
$+5 = 00000101_2$
Инверсия: $11111010_2$
$+1$: $11111011_2 = \mathbf{-5}$ в дополнении до двух
Преимущество дополнения до двух: сложение положительных и отрицательных чисел выполняется одной и той же операцией, без специальной обработки знака — именно поэтому этот формат стал универсальным стандартом.
Идея: число представляется в форме $\pm\text{мантисса} \times 2^{\text{порядок}}$. Структура 32-битного числа (float):
| Поле | Знак | Порядок (экспонента) | Мантисса |
|---|---|---|---|
| Разрядов | 1 | 8 | 23 |
Пример: как хранится 12,5 в формате float
$12{,}5 = 1{,}5625 \times 2^3$ → знак: 0; порядок: $3 + 127 = 130 = 10000010_2$; мантисса (дробная часть $1{,}5625 - 1 = 0{,}5625$): $0{,}5625$ в двоичной $= 0{,}1001_2$, то есть $10010000000000000000000_2$.
Почему $0{,}1 + 0{,}2 \neq 0{,}3$: ни $0{,}1$, ни $0{,}2$ не имеют точного представления в двоичной системе (оба являются периодическими двоичными дробями). При сложении двух приближённых значений накопленная ошибка округления приводит к результату $0{,}30000000000000004$ вместо $0{,}3$. Это не ошибка языка программирования — это следствие стандарта IEEE 754, работающего в двоичной системе.
$$N = a_n \cdot q^n + a_{n-1} \cdot q^{n-1} + \ldots + a_1 \cdot q^1 + a_0 \cdot q^0 + a_{-1} \cdot q^{-1} + \ldots + a_{-m} \cdot q^{-m}$$
где $q$ — основание системы, $a_i$ — цифры числа, $i$ — номер позиции.
1. Выписать цифры числа с их позициями (справа — позиция 0).
2. Умножить каждую цифру на основание в степени своей позиции.
3. Сложить все произведения.
Целая часть: 1. Делить на основание. 2. Записывать остатки. 3. Читать остатки снизу вверх.
Дробная часть: 1. Умножать на основание. 2. Записывать целые части. 3. Читать целые части сверху вниз.
$q_{\min} = \max(\text{цифры в записи}) + 1$
Пример: запись «726» → максимальная цифра 7 → минимальное основание 8.
| $2^0$ | $2^1$ | $2^2$ | $2^3$ | $2^4$ | $2^5$ | $2^6$ | $2^7$ | $2^8$ | $2^9$ | $2^{10}$ | $2^{11}$ | $2^{12}$ | $2^{13}$ | $2^{14}$ | $2^{15}$ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 | 32768 |
Это способ записи чисел, при котором одна и та же цифра обозначает разные значения в зависимости от своего места (позиции) в числе. Например, в числе 555 каждая пятёрка стоит на своём месте и обозначает соответственно 500, 50 и 5 — одна цифра, три разных значения из-за позиции.
В непозиционной системе (например, римской или египетской) значение символа фиксировано: X = 10 всегда, независимо от места в числе. В позиционной системе значение цифры зависит от позиции: цифра 1 означает 1, 10, 100 и т.д. в зависимости от того, на каком месте она стоит. Позиционные системы намного удобнее для арифметических вычислений.
Основание равно количеству различных символов (цифр) в алфавите системы. Если в системе используются символы 0, 1, 2, 3, 4, 5, 6, 7 — основание равно 8 (восьмеричная). Если 0–9 и A–F — основание равно 16 (шестнадцатеричная). Также основание системы указывается как подстрочный индекс в записи числа: $1011_2$ — двоичная, $347_8$ — восьмеричная.
Если дана запись числа и его десятичное значение, нужно подобрать такое основание q, при котором полиномиальная форма даёт нужный результат. Например, если $21_x = 7_{10}$, то $2 \cdot x + 1 = 7$, откуда $x = 3$. Система трёхзначная. Для более сложных случаев составляется уравнение и решается методом подбора или алгебраически.
Теоретический минимум — основание 2 (двоичная система). При основании 1 система вырождается в унарную — счёт чёрточками. Она технически является позиционной, но крайне неэффективна: число 100 требует 100 символов. Поэтому двоичная система считается практическим минимумом.
Универсальный маршрут: любая система → десятичная → любая система. Из любой системы в десятичную: раскрыть полиномиальную форму и посчитать сумму. Из десятичной в любую систему: целую часть переводить последовательным делением на основание (остатки читать снизу вверх), дробную часть — последовательным умножением на основание (целые части читать сверху вниз). Исключение: между двоичной, восьмеричной и шестнадцатеричной можно переводить напрямую методом триад и тетрад.
По физической причине: электронные элементы (транзисторы, триггеры) устойчиво различают два состояния — «есть напряжение» и «нет напряжения». Реализовать 10 устойчивых состояний (для десятичной системы) технически значительно сложнее и ненадёжнее. Двоичная логика также напрямую соответствует булевой алгебре, на которой строятся все логические схемы.
Для компактности. Один байт (8 бит) в двоичной записи выглядит как 10110011 — 8 символов. В шестнадцатеричной — как B3 — всего 2 символа. Перевод между ними мгновенный (метод тетрад). Поэтому шестнадцатеричная система — стандартный способ отображения двоичных данных для человека: адреса памяти, машинный код, цвета, хэш-суммы — всё выводится в hex.
Да. Например, система с основанием 60 (шестидесятичная) использовалась вавилонянами и до сих пор применяется для измерения времени и углов. В программировании иногда встречается base32 и base64 — системы с основаниями 32 и 64, используемые для кодирования двоичных данных в текстовый вид (например, для передачи файлов по электронной почте). В ЕГЭ 2026 встречаются задачи с основаниями до 22.
