Назад к темам

Двоичная арифметика и кодирование отрицательных чисел

Тренироваться
1

Двоичная арифметика и кодирование отрицательных чисел

Зачем это в ЕГЭ. Задание 14 (1 первичный балл) проверяет умение выполнять арифметические операции в двоичной системе и работать с дополнительным кодом. Встречается в 70% реальных вариантов ФИПИ.

Главная идея. Отрицательные числа хранятся в памяти компьютера в дополнительном коде. Чтобы перевести число в допкод: инвертируем биты и прибавляем 1. Сложение выполняется как обычно, но переполнение игнорируется.

Алгоритм (чеклист).
1. Перевести числа в двоичную систему (если даны в десятичной)
2. Для отрицательных чисел:
- взять прямой код модуля числа
- инвертировать биты (получить обратный код)
- прибавить 1 (получить дополнительный код)
3. Выполнить сложение/вычитание столбиком
4. Если результат отрицательный — перевести из допкода обратно:
- вычесть 1
- инвертировать биты
- добавить минус
5. Проверить на переполнение (если старшие биты не совпадают с ожидаемым знаком)

Опоры (кратко).
- Формула допкода: X=X+1-X = \overline{X} + 1
- Диапазон 8-битных чисел: 128-128 до 127127
- Признак переполнения: CoutCinC_{out} \neq C_{in} для старшего бита

Пример 1 (сложение в допкоде). Вычислите 9712297 - 122 в 8-битном представлении.
Шаг 1. 9710=01100001297_{10} = 01100001_2 (прямой код)
Шаг 2. 12210-122_{10}:
- Прямой код модуля: 0111101001111010
- Обратный код: 1000010110000101
- Дополнительный код: 1000011010000110
Шаг 3. Сложение:
`
01100001
+10000110
--------
11100111 (игнорируем переполнение)
`
Шаг 4. Перевод результата:
- Вычитаем 1: 1110011011100110
- Инвертируем: 0001100100011001
- Десятичное: 2510-25_{10}

Пример 2 (переполнение). Сложите 100+50100 + 50 в 8-битном допкоде.
Шаг 1. 10010=011001002100_{10} = 01100100_2
Шаг 2. 5010=00110010250_{10} = 00110010_2
Шаг 3. Сложение:
`
01100100
+00110010
--------
10010110 (знаковый бит 1 → отрицательное)
`
Шаг 4. Проверка: ожидали 150150, но максимальное положительное число — 127127. Произошло переполнение.

Типичные ошибки.
1. Забывают прибавить 1 при переводе в допкод
2. Не проверяют переполнение при сложении чисел с одинаковыми знаками
3. Путают прямой и обратный код для отрицательных чисел
4. Неправильно интерпретируют результат, если старший бит 1

Дальше. Потренируйтесь на реальных задачах из открытого банка ФИПИ, варьируя разрядность чисел.

Теория изучена?

Закрепи знания на практике — переходи к тренировке!

Тренироваться