Информатика · тема 1 из 13 · ОГЭ № 10 · ЕГЭ № 14

Системы счисления

Как записывать числа в двоичной, восьмеричной и шестнадцатеричной системах и быстро переводить между ними — от ОГЭ-10 до ЕГЭ-14.

20 мин чтенияОГЭЕГЭ22 задания

Коротко

главное за 30 секунд
  1. Цифра умножается на основание в степени номера разряда (разряды нумеруются справа с нуля)
  2. Из десятичной в любую систему — деление на основание с остатком, остатки читаются снизу вверх
  3. 2 ↔ 8: группы по 3 бита (триады); 2 ↔ 16: группы по 4 бита (тетрады)
  4. Двоичная запись 2n — единица и n нулей; 2n − 1 — n единиц
  5. В Python: int("1011", 2), bin(), oct(), hex(); для других оснований — свой цикл с % и //

Как устроено позиционное число

В позиционной системе вклад цифры зависит от её места. Основание системы $q$ — это сколько различных цифр в ней есть: в двоичной — 0 и 1, в восьмеричной — от 0 до 7, в шестнадцатеричной — 0–9 и буквы A (10), B (11), C (12), D (13), E (14), F (15).

Развёрнутая форма. Разряды нумеруем справа налево, начиная с нуля:
$$\overline{a_{n}\dots a_1 a_0}_{\,q} = a_n\cdot q^n + \dots + a_1\cdot q + a_0$$

Пример. Переведём 2A316 в десятичную систему.

$2\cdot 16^2 + 10\cdot 16 + 3 = 512 + 160 + 3 = 675$.

Цифра всегда меньше основания. Запись 15828 невозможна — в восьмеричной системе нет цифры 8. Составители любят проверять это в вопросах вида «в какой системе может быть записано число».
Проверь себя. Переведите 11012 в десятичную систему.

Ответ: 13

12⁵3202⁴012³812²402¹012⁰1= 45
Рис. 1. Позиционная запись: 101101₂ = 32 + 8 + 4 + 1 = 45₁₀

Из десятичной — делением с остатком

Чтобы перевести число в систему с основанием $q$, делим его на $q$ с остатком, частное снова делим — и так до нуля. Остатки, прочитанные снизу вверх (от последнего к первому), и есть запись числа.

Пример. 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.

Читаем снизу вверх: 45 = 1011012.

Для двоичной системы удобнее «разложить на степени двойки»: 45 = 32 + 8 + 4 + 1 → единицы в разрядах 5, 3, 2, 0 → 101101.

Попробуйте сами — переводите числа между системами в тренажёре:

Интерактив «Системы счисления» — открыть в тренажёре →

Самая частая ошибка — выписать остатки сверху вниз. Тогда 45 превратится в 101101 только случайно (это палиндром), а, например, 6 = 1102 станет 011.
делим на 2остаток451220111512011читаемснизу вверх:101101
Рис. 2. Перевод 45 в двоичную систему: делим на 2, остатки читаем снизу вверх — 101101₂

Двоичная, восьмеричная, шестнадцатеричная: быстрый перевод

Поскольку $8 = 2^3$ и $16 = 2^4$, каждая восьмеричная цифра — это ровно 3 бита, а шестнадцатеричная — ровно 4 бита.

16-я цифрадвоичная тетрада16-я цифрадвоичная тетрада
0000081000
1000191001
20010A1010
30011B1011
40100C1100
50101D1101
60110E1110
70111F1111
Двоичную запись разбиваем на группы справа налево: по 3 бита для восьмеричной, по 4 — для шестнадцатеричной. Недостающие нули дописываем слева.

Пример. 10110112 → 16-я: 101 1011 → 0101 1011 → 5B16. В восьмеричную: 1 011 011 → 1338.

Проверь себя. Запишите 111100012 в шестнадцатеричной системе.

Ответ: F1

101101111011 → B0111 → 710 → 2110 → 6111 → 710110111₂ = B7₁₆ = 267₈
Рис. 3. Быстрый перевод: двоичные цифры группируют справа налево — по 4 (в 16-ричную) или по 3 (в 8-ричную)

ОГЭ-10 и ЕГЭ-14: как решают на экзамене

ОГЭ, задание 10. Даны три числа в разных системах — нужно найти наибольшее (или наименьшее) и записать его в десятичной. Надёжнее всего перевести все три в десятичную.

ЕГЭ, задание 14. Два главных сюжета.

  1. Выражение со степенями: «Значение выражения $4^{15} + 2^{20} - 16$ записали в двоичной системе. Сколько в записи единиц?»
  2. Неизвестная цифра x в записи чисел — нужно найти x, при котором выражение делится на заданное число.
$2^n$ в двоичной — это 1 и $n$ нулей. $2^n - 2^m$ (при $n \gt m$) — это $n - m$ единиц и за ними $m$ нулей. Аналогично в системе с основанием $q$: $q^n - 1$ — это $n$ цифр $(q-1)$.

Пример. $4^{15} + 2^{20} - 16 = 2^{30} + (2^{20} - 2^4)$. Скобка даёт $20 - 4 = 16$ единиц, $2^{30}$ — ещё одну. Итого 17 единиц.

На КЕГЭ проще и безопаснее посчитать программой: Python работает с длинными числами без ограничений.

x = 4**15 + 2**20 - 16
print(bin(x).count('1'))     # 17

# перевод в произвольную систему
def to_base(x, q):
    digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    s = ''
    while x > 0:
        s = digits[x % q] + s
        x //= q
    return s or '0'

print(to_base(675, 16))      # 2A3
print(int('2A3', 16))        # 675 — обратно
Функции bin, oct, hex возвращают строку с префиксом: bin(5) = '0b101'. При подсчёте нулей префикс '0b' добавит лишний ноль! Считайте через bin(x)[2:].
Практика

Закрепите тему: 22 задания для ОГЭ и ЕГЭ

От простых к сложным: базовый уровень — 8, повышенный — 9, высокий — 5. Мгновенная проверка, подсказки, подробные решения и тренажёр ошибок.

Решать задания по теме Флеш-карточки