Представление чисел в позиционных системах счисления
Представь: ты открываешь инспектор элементов в браузере и видишь странные символы вроде #FF5733. Или смотришь код игры и натыкаешься на 0x1A3F. Что это? Какой-то тайный язык программистов? На самом деле — это просто другой способ записи чисел. И сегодня мы разберемся, почему компьютеры «думают» не так, как мы, и как это использовать в свою пользу.
10.1. Откуда взялись системы счисления
Как вообще люди начали считать? Археологи находят древние кости с зарубками — каждая зарубка обозначала один предмет. Пять оленей — пять зарубок. Двадцать оленей — двадцать зарубок. Такая система называется унарной (от слова «один»). Но попробуй записать так число 1000 — рука устанет!
💡 Где ты встречал унарную систему?
Подумай: когда ты отмечаешь дни в календаре палочками или считаешь очки в игре черточками — это она и есть!
📖 Определение
Система счисления — это набор правил для записи чисел с помощью определенного набора символов (цифр). Количество доступных цифр называется основанием системы счисления.
Пример из прошлого: римская система
От жестов к символам: как люди придумывали способы записи чисел
Древние римляне придумали свою систему около 2500 лет назад. Они использовали буквы: I (1), V (5), X (10), L (50), C (100), D (500), M (1000).
🔢 Пример записи
Например, число 2024 они бы записали как MMXXIV.
Разложим: MM (1000 + 1000) + XX (10 + 10) + IV (5 − 1).
Обрати внимание на хитрость: меньшая цифра СЛЕВА от большей означает вычитание, а справа — сложение.
🤔 Интересный вопрос
Можно ли римскую систему считать полностью непозиционной? Подсказка: подумай о правиле «меньший символ слева от большего».
❌ Почему от непозиционных систем отказались
Непозиционные системы неудобны:
- Для больших чисел нужно постоянно вводить новые символы
- Невозможно записать дроби или отрицательные числа
- Арифметические операции превращаются в кошмар (попробуй умножить MCMXCIV на XLVII!)
10.2. Магия позиции: как место цифры меняет её значение
Позиционная магия: одна цифра, три значения — всё зависит от места
Давай проведем мысленный эксперимент. Возьми число 555. Все три цифры одинаковые, но означают разное!
500
Пять сотен
50
Пять десятков
5
Пять единиц
✨ Главная идея
Это и есть позиционная система: значение цифры зависит от её позиции в числе.
Как это придумали
История позиционной системы — это детективная история длиной в тысячелетия. Начали древние египтяне и вавилоняне, а завершили индийские математики в V–VII веках н.э.
💡 Главное изобретение — ноль
Да-да, ноль нужно было изобрести! Без него непонятно, чем отличается 25 от 205.
🌍 Распространение по миру
Арабы познакомились с этой системой, оценили её удобство и распространили по Европе в XII веке. Поэтому мы называем привычные цифры арабскими, хотя изобрели их индийцы.
💬 Цитата великого математика
Французский математик Пьер Симон Лаплас сказал: «Мысль выражать все числа немногими знаками, придавая им значение не только по форме, но и по месту, настолько проста, что именно из-за этой простоты трудно оценить, насколько она удивительна».
Как устроены позиционные системы
Любая позиционная система определяется числом q > 1 — это её основание. Основание говорит нам:
🔢 Алфавит системы
Сколько разных цифр мы используем (от 0 до q−1)
⚡ Правило переноса
Во что превращается разряд при переполнении (q единиц = 1 единица следующего разряда)
Популярные системы счисления:
01
Алфавит {0, 1} — язык процессоров
012
Алфавит {0, 1, 2} — использовалась в советском компьютере «Сетунь»
01234567
Компактная запись двоичных чисел
0123456789
Наша привычная система
0123456789ABCDEF
Для цветов в web, адресов памяти
Развёрнутая и свёрнутая формы записи
Любое число можно представить как сумму разрядных слагаемых.
📝 Пример развёрнутой формы
Число 125 248₁₀ раскладывается так:
125 248 = 1·10⁵ + 2·10⁴ + 5·10³ + 2·10² + 4·10¹ + 8·10⁰
= 1·100000 + 2·10000 + 5·1000 + 2·100 + 4·10 + 8·1
= 100000 + 20000 + 5000 + 200 + 40 + 8
🎯 Определение
Развёрнутая форма — запись числа в виде суммы разрядных слагаемых.
Свёрнутая форма — обычная запись (125 248).
🧮 Схема Горнера: хитрый способ вычисления
Иногда полезно переписать число так, чтобы избежать возведения в степень:
125 248 = ((((1·10 + 2)·10 + 5)·10 + 2)·10 + 4)·10 + 8
Эта форма особенно удобна для программирования — мы можем вычислить число, проходя по цифрам слева направо и каждый раз умножая промежуточный результат на основание.
Почему компьютеры «думают» в двоичной системе
Простота = мощь: почему компьютеры выбрали язык из двух символов
Первые механические калькуляторы работали в десятичной системе. Для этого использовались сложные системы зубчатых колес с десятью позициями. Такие машины были огромными и ненадежными.
🚀 Прорыв 1937 года
Немецкий инженер Конрад Цузе создал вычислительную машину на основе двоичной системы счисления. Машина занимала всего 2 м² на столе в его квартире — революционная компактность!
Почему двоичная система так хороша для компьютеров?
⚡
Простота реализации: электронные схемы легко реализуют два состояния: есть ток / нет тока
✓
Надежность: различить два состояния проще, чем десять — меньше вероятность ошибки
🔗
Логика: логические операции (И, ИЛИ, НЕ) естественно работают с двоичными значениями
10.3. Переводы между системами счисления
Универсальный переводчик: одно количество, множество способов записи
Из q-ичной системы в десятичную
Это проще всего — используем развёрнутую форму записи:
Записываем число как сумму разрядных слагаемых
Переводим все числа в десятичную систему
Вычисляем сумму
📌 Пример 1: Переводим 212₃ в десятичную систему
212₃ = 2·3² + 1·3¹ + 2·3⁰
= 2·9 + 1·3 + 2·1
= 18 + 3 + 2
= 23₁₀
📌 Пример 2: Переводим 12A₁₆ в десятичную систему
Помним: A₁₆ = 10₁₀
12A₁₆ = 1·16² + 2·16¹ + 10·16⁰
= 256 + 32 + 10
= 298₁₀
Лайфхак: перевод двоичных чисел через схему Горнера
Для двоичных чисел есть быстрый алгоритм. Переведем 1001110011₂:
🔄 Алгоритм
- Берем первую цифру: 1
- Умножаем на 2: 1 · 2 = 2
- Прибавляем следующую цифру: 2 + 0 = 2
- Умножаем на 2: 2 · 2 = 4
- Прибавляем следующую цифру: 4 + 0 = 4
- ...продолжаем до конца числа...
- Результат: 627₁₀
💡 Почему это удобно?
Нам не нужно запоминать большие степени двойки — мы просто чередуем умножение на 2 и прибавление следующей цифры.
Разбор интересных задач
Математический детектив: раскрываем секреты кодирования информации
Задача 1: Детективное расследование 🔍
Условие
Десятичное число 57 в некоторой системе счисления записывается как 212. Какое основание у этой системы?
Решение
Запишем уравнение: 212q = 57₁₀
Раскроем через степени основания:
2·q² + 1·q¹ + 2·q⁰ = 57
2q² + q + 2 = 57
2q² + q − 55 = 0
Решаем квадратное уравнение: q₁ = −5,5 (не подходит), q₂ = 5
Ответ: основание системы — 5 (пятеричная система счисления)
Задача 2: Слова как числа 📝
Условие
Все пятибуквенные слова из букв А, И, Р, С, Т записаны в алфавитном порядке. На каком месте стоит слово ИСТРА? Сколько всего слов в списке?
Решение
Хитрость в том, что этот список — замаскированная последовательность чисел!
Закодируем буквы:
А → 0, И → 1, Р → 2, С → 3, Т → 4
Тогда ИСТРА → 13420₅ (число в пятеричной системе!)
Переводим в десятичную:
13420₅ = 1·5⁴ + 3·5³ + 4·5² + 2·5¹ + 0·5⁰
= 625 + 375 + 100 + 10
= 1110₁₀
Но это не место в списке! В списке первое слово ААААА соответствует числу 0 и находится на месте 1.
Значит, слово ИСТРА на месте 1110 + 1 = 1111.
Всего слов: последнее слово ТТТТТ → 44444₅ = 3124₁₀. Значит, в списке 3125 слов.
Альтернативный подход: Из комбинаторики — это размещения с повторениями: 5⁵ = 3125.
Задача 3: Числовые диапазоны 🎯
Условие
Укажите через запятую в порядке возрастания все десятичные числа, не превосходящие 60, запись которых в четверичной системе счисления оканчивается на 31.
Решение
В четверичной системе используются цифры 0, 1, 2 и 3. Составим таблицу степеней:
4⁰ = 1
4¹ = 4
4² = 16
4³ = 64
Из этой таблицы видно, что интересующие нас числа (≤ 60) не будут более чем трёхзначными.
С учётом того что их запись заканчивается на 31, определим первую цифру (k):
k·16 + 3·4 + 1 ≤ 60
k·16 ≤ 47
k ∈ {0, 1, 2}
Искомые числа:
- 31₄ = 13₁₀ (k = 0)
- 131₄ = 29₁₀ (k = 1)
- 231₄ = 45₁₀ (k = 2)
Ответ: 13, 29, 45
🎯 КЛЮЧЕВЫЕ ВЫВОДЫ
🤔 ПРОВЕРЬ СЕБЯ
Креативные задания для закрепления материала
1. Мысленный эксперимент: инопланетная математика
Представь, что ты создаешь систему счисления для инопланетян с тремя пальцами на руке. Какое основание ты выберешь и почему? Запиши число 10₁₀ в этой системе.
2. Детектив: найди основание системы
Число записано как 100 в некоторой системе счисления и равно 16₁₀. Какая это система? Подсказка: составь уравнение.
3. Где в жизни: цвета в CSS
В CSS цвет задается как #FF5733. Это шестнадцатеричная запись!
- FF₁₆ = сколько в десятичной?
- А зачем программисты используют именно шестнадцатеричную систему для цветов?
4. Аналогия: объясни младшему
Объясни младшему брату или сестре (или другу, который не в теме), что такое позиционная система счисления. Какую аналогию ты бы использовал?
5. Применение: переведи свой возраст
Переведи свой возраст в двоичную, восьмеричную и шестнадцатеричную системы. Какая запись самая короткая? Почему?
6. Парадокс: одинаковые на вид — разные по сути
Найди три разных числа в трех разных системах счисления, которые ВЫГЛЯДЯТ одинаково (например, 100), но означают разные количества. Какое из них самое большое?
7. Исследование: почему не троичная?
Советский компьютер «Сетунь» работал в троичной системе счисления. Почему троичная система не стала стандартом для компьютеров? Какие у неё могли быть преимущества и недостатки?
8. Кодирование: создай свой шифр
Используя идею из задачи про слова ИСТРА, создай свой способ шифрования коротких сообщений через системы счисления. Зашифруй слово из 3-4 букв.
📚 Задачи из учебника
Классические задачи для отработки навыков
Задача 1
Вычислите десятичные эквиваленты следующих чисел:
- 120₃
- 100,21₄
- 5A,124₁₆
Задача 2
Существует ли треугольник, длины сторон которого выражаются числами 12₈, 122₃ и 11011₂?
Задача 3
Найдите основание x системы счисления, если известно:
- 47₁₀ = 21ₓ
- 1331ₓ = 216₁₀
Задача 4
Какое из чисел C, записанных в двоичной системе, удовлетворяет неравенству 9D₁₆ < C < 237₈?
- 1) 10011010₂
- 2) 10011110₂
- 3) 10011111₂
- 4) 11011110₂