Зачем это в ЕГЭ. Задание 14 (1 первичный балл) проверяет умение выполнять арифметические операции в двоичной системе и работать с дополнительным кодом. Встречается в 70% реальных вариантов ФИПИ.
Главная идея. Отрицательные числа хранятся в памяти компьютера в дополнительном коде. Чтобы перевести число в допкод: инвертируем биты и прибавляем 1. Сложение выполняется как обычно, но переполнение игнорируется.
Алгоритм (чеклист).
1. Перевести числа в двоичную систему (если даны в десятичной)
2. Для отрицательных чисел:
- взять прямой код модуля числа
- инвертировать биты (получить обратный код)
- прибавить 1 (получить дополнительный код)
3. Выполнить сложение/вычитание столбиком
4. Если результат отрицательный — перевести из допкода обратно:
- вычесть 1
- инвертировать биты
- добавить минус
5. Проверить на переполнение (если старшие биты не совпадают с ожидаемым знаком)
Опоры (кратко).
- Формула допкода:
- Диапазон 8-битных чисел: до
- Признак переполнения: для старшего бита
Пример 1 (сложение в допкоде). Вычислите в 8-битном представлении.
Шаг 1. (прямой код)
Шаг 2. :
- Прямой код модуля:
- Обратный код:
- Дополнительный код:
Шаг 3. Сложение:
`
01100001
+10000110
--------
11100111 (игнорируем переполнение)
`
Шаг 4. Перевод результата:
- Вычитаем 1:
- Инвертируем:
- Десятичное:
Пример 2 (переполнение). Сложите в 8-битном допкоде.
Шаг 1.
Шаг 2.
Шаг 3. Сложение:
`
01100100
+00110010
--------
10010110 (знаковый бит 1 → отрицательное)
`
Шаг 4. Проверка: ожидали , но максимальное положительное число — . Произошло переполнение.
Типичные ошибки.
1. Забывают прибавить 1 при переводе в допкод
2. Не проверяют переполнение при сложении чисел с одинаковыми знаками
3. Путают прямой и обратный код для отрицательных чисел
4. Неправильно интерпретируют результат, если старший бит 1
Дальше. Потренируйтесь на реальных задачах из открытого банка ФИПИ, варьируя разрядность чисел.