§ 12. Арифметические операции в позиционных системах счисления
Давайте разберемся, как компьютеры считают. Интересный парадокс: несмотря на то, что компьютер работает только с нулями и единицами, он способен обрабатывать числа в любых системах счисления. Как это вообще возможно?
Универсальный язык вычислений: разные системы, единая логика
Универсальность арифметических правил
Арифметические операции в позиционных системах счисления с основанием q выполняются по правилам, аналогичным правилам, действующим в десятичной системе счисления.
💡 Ключевая идея
Представьте, что вы учите новый язык программирования. Синтаксис может отличаться, но логика остается той же. Точно так же и с системами счисления — принципы сложения, вычитания, умножения и деления универсальны. Меняются только "слова" (цифры) и правила их комбинирования.
🎯 Для чего это нужно?
В начальной школе для обучения счёту используют таблицы сложения и умножения. Подобные таблицы можно составить для любой позиционной системы счисления — и это именно то, чем мы займемся!
12.1. Сложение чисел в системе счисления с основанием q
Помните, как в начальной школе вы зубрили таблицу сложения? Это был фундамент для всей арифметики. Оказывается, для любой системы счисления с основанием q можно составить аналогичную таблицу.
Таблицы сложения для разных систем
Троичная система (основание 3)
Используются только цифры 0, 1, 2
+ | 0 | 1 | 2
---|---|---|---
0 | 0 | 1 | 2
1 | 1 | 2 | 10
2 | 2 | 10| 11
Обратите внимание: 1 + 2 = 10₃. Почему? Потому что мы достигли основания системы (3), и нужно перейти к следующему разряду. Это как в десятичной: 9 + 1 = 10.
Восьмеричная система (основание 8)
Используются цифры от 0 до 7
+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
---|---|---|---|---|---|---|---|---
0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10
2 | 2 | 3 | 4 | 5 | 6 | 7 | 10| 11
3 | 3 | 4 | 5 | 6 | 7 | 10| 11| 12
4 | 4 | 5 | 6 | 7 | 10| 11| 12| 13
5 | 5 | 6 | 7 | 10| 11| 12| 13| 14
6 | 6 | 7 | 10| 11| 12| 13| 14| 15
7 | 7 | 10| 11| 12| 13| 14| 15| 16
Поразрядное сложение: построение числа от младших разрядов к старшим
🔢 Алгоритм сложения
Чтобы в системе счисления с основанием q получить сумму S двух чисел A и B, надо просуммировать образующие их цифры по разрядам i справа налево:
- Если ai + bi < q, то si = ai + bi, старший (i + 1)-й разряд не изменяется
- Если ai + bi ≥ q, то si = ai + bi – q, старший (i + 1)-й разряд увеличивается на 1
Примеры сложения
Троичная система
1 0 0 2 0 2₃
+ 1 0 1 0 2₃
_____________
1 1 1 0 1 1₃
Восьмеричная система
1 2 3 4 5₈
+ 2 4 4 3₈
___________
1 5 0 1 0₈
Шестнадцатеричная система
F E 1 2 A 9₁₆
+ 2 3 5 2 8₁₆
_______________
1 0 0 4 7 D 1₁₆
12.2. Вычитание чисел в системе счисления с основанием q
Вычитание — это обратная сторона сложения. Алгоритм следует той же логике, но в обратном направлении.
🔢 Алгоритм вычитания
Чтобы в системе счисления с основанием q получить разность R двух чисел A и B, надо вычислить разности образующих их цифр по разрядам i справа налево:
- Если ai ≥ bi, то ri = ai – bi, старший (i + 1)-й разряд не изменяется
- Если ai < bi, то ri = ai – bi + q, старший (i + 1)-й разряд уменьшается на 1 (выполняется заём в старшем разряде)
Примеры вычитания
Троичная система
1 0 0 1 1 0₃
- 1 0 1 0 1₃
_____________
2 0 0 0 2₃
Восьмеричная система
1 7 3 4 5₈
- 2 4 4 3₈
___________
1 4 7 0 2₈
Шестнадцатеричная система
F E 1 2 A 9₁₆
- 2 3 5 2 8₁₆
_______________
F B D D 8 1₁₆
🤔 Вопрос для размышления
Сможешь объяснить младшему брату или сестре, почему при вычитании в восьмеричной системе из 5 нельзя вычесть 6 без заёма из старшего разряда?
12.3. Умножение чисел в системе счисления с основанием q
Умножение — это по сути повторяющееся сложение. И здесь тоже существуют готовые таблицы, аналогичные таблице умножения из начальной школы.
Таблицы умножения
Троичная система
× | 0 | 1 | 2
---|---|---|---
0 | 0 | 0 | 0
1 | 0 | 1 | 2
2 | 0 | 2 | 11
Заметили? 2 × 2 = 4₁₀ = 11₃ (одна тройка и одна единица)
Восьмеричная система
× | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
---|---|---|---|---|---|---|---|---
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
2 | 0 | 2 | 4 | 6 | 10| 12| 14| 16
3 | 0 | 3 | 6 | 11| 14| 17| 22| 25
4 | 0 | 4 | 10| 14| 20| 24| 30| 34
5 | 0 | 5 | 12| 17| 24| 31| 36| 43
6 | 0 | 6 | 14| 22| 30| 36| 44| 52
7 | 0 | 7 | 16| 25| 34| 43| 52| 61
Умножение столбиком: комбинация поразрядных произведений
🔢 Умножение многозначного числа на однозначное
Чтобы в системе счисления с основанием q получить произведение M многозначного числа A и однозначного числа b, надо вычислить произведения b и цифр, образующих число A, по разрядам i справа налево:
- Если ai · b < q, то mi = ai · b, старший (i + 1)-й разряд не изменяется
- Если ai · b ≥ q, то mi = ai · b mod q, старший (i + 1)-й разряд увеличивается на ai · b div q (где div — операция целочисленного деления)
Примеры умножения на однозначное число
Троичная система
2 0 2₃
× 2₃
_______
1 1 1 1₃
Проверка: 2 0 2₃ = 20₁₀, 20₁₀ × 2 = 40₁₀ = 1 1 1 1₃ ✓
Восьмеричная система
2 4 6₈
× 5₈
_______
1 4 7 6₈
Шестнадцатеричная система
A D 9 3₁₆
× 9₁₆
_____________
6 1 A 2 B₁₆
Умножение многозначных чисел "столбиком"
Для умножения многозначных чисел используется метод столбика. Числа выравниваются по разрядам, получаются частичные произведения, которые затем складываются.
Важно: Если один из множителей или оба оканчиваются нулями, то числа записываются так, чтобы в одном столбце оказались их самые младшие разряды с цифрами, отличными от нуля. Нули переносятся в итоговое произведение.
Троичная система
2 0 2 0₃
× 2 1 0₃
___________
2 0 2₃
+ 1 1 1 1₃
___________
1 2 0 1 2 0 0₃
Восьмеричная система
2 4 6 0₈
× 1 5₈
___________
1 4 7 6₈
+ 2 4 6₈
___________
4 1 5 6 0₈
12.4. Деление чисел в системе счисления с основанием q
Деление — это единственная арифметическая операция, которую нельзя свести к простым поразрядным действиям. Здесь нужен итеративный подход.
⚠️ Особенность деления
Деление нельзя свести к поразрядным операциям над цифрами, составляющими число. Деление чисел в системе счисления с произвольным основанием q выполняется так же, как и в десятичной системе счисления — методом "деления уголком".
Пример деления в восьмеричной системе
2 6 4 0₈ | 1 7₈
- 1 7₈ |_______
_____ | 1 4 0₈
7 4₈
- 7 4₈
_____
0
Проверка: 1 7₈ = 15₁₀, 2 6 4 0₈ = 1440₁₀, 1 4 0₈ = 96₁₀
1440₁₀ ÷ 15₁₀ = 96₁₀ ✓
🤔 Вопрос для размышления
Как бы ты объяснил процесс деления тому, кто знаком только с делением в десятичной системе? В чем ключевое сходство?
12.5. Двоичная арифметика — язык процессора
Двоичная арифметика максимально элементарна — всего две цифры! Именно поэтому она идеальна для компьютерных вычислений.
Таблицы двоичных операций — предельная простота
Сложение
+ | 0 | 1
---|---|---
0 | 0 | 1
1 | 1 | 10
Вычитание
- | 0 | 1
---|---|---
0 | 0 | 11
1 | 1 | 0
Умножение
× | 0 | 1
---|---|---
0 | 0 | 0
1 | 0 | 1
✨ Элегантность двоичной арифметики
Обратите внимание на элегантность: умножение на 1 не меняет число, на 0 — обнуляет. Именно поэтому процессоры могут выполнять операции с огромной скоростью — логика предельно проста!
Примеры базовых операций
Сложение
1 1 1 1 1 1₂
+ 1 1 1 1 1 1₂
1
_______________
1 0 0 0 0 0 0₂
Вычитание
1 1 1 1 1₂
- 1 0 0 0 0₂
___________
1 1 1 1₂
1 0 1 1 1 1 0 1₂
- 1 0 0 0 0₂
_______________
1 0 1 0 1 0 1₂
Двоичная алгебра: элегантные паттерны степеней двойки
Работа со степенями двойки — секретное оружие
Здесь начинается настоящая магия! Для эффективной работы с двоичными числами важно понимать закономерности.
🔑 Ключевое наблюдение
Обратите внимание на закономерность:
2¹ = 10₂ = 1 + 1
2² = 100₂ = 11₂ + 1
2³ = 1000₂ = 111₂ + 1
2⁴ = 10000₂ = 1111₂ + 1
Общая формула:
2ⁿ = 1̲0̲…̲0̲ = 1̲…̲1̲ + 1
└─n─┘ └n┘
📐 Формулы для натуральных n и m (где n > m)
2ⁿ + 2ᵐ = 1̲0̲…̲0̲ + 1̲0̲…̲0̲ = 1̲0̲…̲0̲1̲0̲…̲0̲
└─n─┘ └─m─┘ └n-m-1┘└─m─┘
2ⁿ - 2ᵐ = 1̲…̲1̲ + 1 - (1̲…̲1̲ + 1) = 1̲…̲1̲ - 1̲…̲1̲ = 1̲…̲1̲0̲…̲0̲
└─n─┘ └─m─┘ └─n─┘ └─m─┘ └n-m┘└─m─┘
Практическая задача: подсчет единиц без вычислений
Пример 1. Количество единиц в двоичной записи
Задача: Найти количество единиц в двоичной записи числа:
2⁴⁰⁰⁰ + 4²⁰¹⁶ + 2²⁰¹⁸ - 8⁶⁰⁰ + 6
Решение:
Шаг 1: Преобразуем все к степеням двойки
4²⁰¹⁶ = (2²)²⁰¹⁶ = 2²·²⁰¹⁶ = 2⁴⁰³²
8⁶⁰⁰ = (2³)⁶⁰⁰ = 2¹⁸⁰⁰
6 = 4 + 2 = 2² + 2¹
Исходное выражение:
2⁴⁰⁰⁰ + 4²⁰¹⁶ + 2²⁰¹⁸ - 8⁶⁰⁰ + 6 =
= 2⁴⁰⁰⁰ + 2⁴⁰³² + 2²⁰¹⁸ - 2¹⁸⁰⁰ + 2² + 2¹
Шаг 2: Перепишем в порядке убывания степеней:
2⁴⁰³² + 2⁴⁰⁰⁰ + 2²⁰¹⁸ - 2¹⁸⁰⁰ + 2² + 2¹
Шаг 3: Используем формулы для разностей
- 2⁴⁰³² дает 1 единицу
- 2⁴⁰⁰⁰ дает 1 единицу
- 2²⁰¹⁸ - 2¹⁸⁰⁰ = цепочка из (2018 - 1800) = 218 единиц
- 2² дает 1 единицу
- 2¹ дает 1 единицу
Ответ: 1 + 1 + 218 + 1 + 1 = 222 единицы
Без единого вычисления! Просто анализ структуры двоичного представления.
Пример 2. Количество цифр при переводе
Задача: Найти количество цифр в восьмеричной записи числа:
2²⁹⁹ + 2²⁹⁸ + 2²⁹⁷ + 2²⁹⁶
Решение:
Двоичное представление исходного числа имеет вид:
1111̲0̲…̲0̲
└296┘
Всего в этой записи 300 двоичных символов (4 + 296).
При переводе двоичного числа в восьмеричную систему каждая триада (группа из 3 двоичных цифр) исходного числа заменяется одной восьмеричной цифрой.
Следовательно:
300 ÷ 3 = 100
Ответ: восьмеричное представление исходного числа состоит из 100 цифр.
Применение в жизни: Такие расчеты используются при оценке размера данных в памяти или при оптимизации алгоритмов шифрования.
🤔 Вопрос для размышления
Где в реальной жизни может пригодиться умение быстро определять количество разрядов в различных системах счисления? Подумай о работе с памятью компьютера, сетевыми адресами или криптографией.
Ключевые выводы
Что важно запомнить из этого раздела
🤔 Проверь себя
Кейсы и задачи для закрепления материала
1. Кейс-задача: Микроконтроллер игровой консоли
Представь, что ты программируешь микроконтроллер игровой консоли. Тебе нужно сложить два 8-битных числа 10110110₂ и 01101101₂.
Задание:
- Выполни операцию сложения
- Определи, произошло ли переполнение (результат не помещается в 8 бит)
- Объясни, какие последствия может иметь переполнение в реальной программе
2. Мысленный эксперимент: Почему не троичная система?
Почему процессор использует двоичную, а не троичную систему, если троичная более "информационно плотная" (больше значений на цифру)?
Подумай о:
- Физической реализации (как представить 3 состояния электрическим сигналом?)
- Надежности и помехоустойчивости
- Сложности логических схем
3. Аналогия: Восьмеричная vs десятичная
Сравни процесс сложения в восьмеричной системе с процессом в десятичной.
Ответь на вопросы:
- В чем принципиальное сходство?
- В чем ключевое различие?
- Можешь ли ты объяснить это человеку, который никогда не слышал о других системах счисления?
4. Реальное применение: Где используется шестнадцатеричная система?
В каких областях IT (кроме процессоров) используется шестнадцатеричная система? Почему именно она, а не, например, пятеричная?
Подсказки для размышления:
- Цвета в веб-дизайне (#FF5733)
- MAC-адреса сетевых устройств
- Дампы памяти при отладке программ
- Почему удобна именно шестнадцатеричная, а не другая система?
5. Комбинированная задача
Вычисли (11111101₂ + AF₁₆) : 36₈ и запиши ответ в десятичной системе.
Обдумай:
- Какой способ решения будет наиболее эффективным?
- Стоит ли переводить всё в десятичную систему сразу или есть более элегантный путь?
- Как можно проверить правильность результата?
6. Задача на понимание: Почему деление особенное?
Объясни, почему деление нельзя свести к поразрядным операциям, в отличие от сложения и умножения?
Размышляй о:
- Природе операции деления
- Зависимости результата от всех разрядов делимого
- Алгоритме "подбора" цифр частного
📝 Задачи из учебника
Дополнительные упражнения для практики
Задача 1. Арифметика в разных системах
Выполните арифметические операции над двоичными числами:
- 10010011₂ + 101101₂
- 110010,11₂ + 110110,11₂
- 110101110₂ - 10111111₂
- 111110₂ · 100010₂
- 11111100101₂ : 101011₂
Проверка: Найдите десятичные эквиваленты операндов и результата для самопроверки.
Задача 2. Следующее число
Какое число следует за каждым из данных:
- 223₄
- 677₈
- 2222₃
- 1001₂
Ответ для каждого числа дайте в указанной и десятичной системах счисления.
Задача 3. Предыдущее число
Какое число предшествует каждому из данных:
- 222₃
- 1000₅
- 233₄
- 1001₂
Ответ для каждого числа дайте в указанной и десятичной системах счисления.
Задача 4. Поиск цифры
Сумму восьмеричных чисел 17₈ + 1700₈ + 170000₈ + 17000000₈ + 1700000000₈ перевели в шестнадцатеричную систему счисления.
Найдите: пятую цифру слева в шестнадцатеричной записи числа, равного этой сумме.
Задача 5. Смешанные системы
Вычислите значение выражения:
- (1111101₂ + AF₁₆) : 36₈
- 125₈ + 11101₂ · A2₁₆ - 1417₈
Ответ запишите в десятичной системе счисления.
Задача 6. Среднее арифметическое
Найдите среднее арифметическое следующих чисел:
- 10010110₂, 1100100₂ и 110010₂
- 226₈, 64₁₆ и 62₈
Задача 7. Восстановление цифр
В примерах на сложение восстановите неизвестные цифры, обозначенные знаком вопроса, определив вначале, в какой системе счисления эти числа записаны:
2 ? 2 1
+ 1 2 3 ?
___________
? 2 0 3 ?
5 ? 5 5
+ ? 3 2 7
___________
? 1 6 ?
2 1 ? 0 2
+ ? 1 2 1 2
___________
? 2 ? 0 2 1
Задача 8. Сравнение чисел
Даны 4 целых числа, записанные в двоичной системе счисления:
11000000₂, 11000011₂, 11011001₂, 11011111₂
Вопрос: Сколько среди них чисел, больших, чем AB₁₆ + 25₈?
Задача 9. Подсчет единиц (★)
Сколько единиц в двоичной записи числа 4²⁰¹⁴ + 2²⁰¹⁵ - 9?
Подсказка: используйте свойства степеней двойки!
Задача 10. Сложная задача на единицы (★★)
Сколько единиц в двоичной записи числа:
8⁴⁰²⁴ - 4¹⁶⁰⁵ + 2¹⁰²⁴ - 126
Задача 11. Подсчет цифр (★)
Сколько цифр в восьмеричной записи числа 2¹⁰²⁴ + 2¹⁰²⁶?
Задача 12. Первая цифра (★)
Какая первая цифра в шестнадцатеричной записи числа 2¹⁰²⁴ + 2¹⁰²⁵?