Как устроено позиционное число
В позиционной системе вклад цифры зависит от её места. Основание системы $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$.
Проверь себя. Переведите 11012 в десятичную систему.
Ответ: 13
Из десятичной — делением с остатком
Чтобы перевести число в систему с основанием $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.
Попробуйте сами — переводите числа между системами в тренажёре:
Интерактив «Системы счисления» — открыть в тренажёре →
Двоичная, восьмеричная, шестнадцатеричная: быстрый перевод
Поскольку $8 = 2^3$ и $16 = 2^4$, каждая восьмеричная цифра — это ровно 3 бита, а шестнадцатеричная — ровно 4 бита.
| 16-я цифра | двоичная тетрада | 16-я цифра | двоичная тетрада |
|---|---|---|---|
| 0 | 0000 | 8 | 1000 |
| 1 | 0001 | 9 | 1001 |
| 2 | 0010 | A | 1010 |
| 3 | 0011 | B | 1011 |
| 4 | 0100 | C | 1100 |
| 5 | 0101 | D | 1101 |
| 6 | 0110 | E | 1110 |
| 7 | 0111 | F | 1111 |
Пример. 10110112 → 16-я: 101 1011 → 0101 1011 → 5B16. В восьмеричную: 1 011 011 → 1338.
Проверь себя. Запишите 111100012 в шестнадцатеричной системе.
Ответ: F1
ОГЭ-10 и ЕГЭ-14: как решают на экзамене
ОГЭ, задание 10. Даны три числа в разных системах — нужно найти наибольшее (или наименьшее) и записать его в десятичной. Надёжнее всего перевести все три в десятичную.
ЕГЭ, задание 14. Два главных сюжета.
- Выражение со степенями: «Значение выражения $4^{15} + 2^{20} - 16$ записали в двоичной системе. Сколько в записи единиц?»
- Неизвестная цифра x в записи чисел — нужно найти x, при котором выражение делится на заданное число.
Пример. $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 — обратно