← Вернуться к оглавлению
Alterna · глава 30 · страница 30.1

Представление целых чисел

Три кода, диапазоны, симулятор переполнения и сравнение всех кодов сразу.

Отрицательные целые хранятся в дополнительном коде. Это позволяет процессору использовать одну схему ALU для сложения и вычитания. Понимание этих кодов — ключ к задачам ЕГЭ №14.

ФГОСФОПЕГЭ №14
01

Прямой код (sign-magnitude)

Старший бит — знак (0 = «+», 1 = «−»). Остальные биты — модуль числа в обычном двоичном представлении.

Примеры в 8 битах

+5 = 00000101
−5 = 10000101
+0 = 00000000
−0 = 10000000
Проблема Два нуля: +0 и −0. Сложение требует анализа знаков. В современных компьютерах не используется.
02

Обратный код (ones' complement)

Для положительных — как прямой. Для отрицательных — инвертируются все биты (включая знаковый).

Примеры в 8 битах

+5 = 00000101
−5 = 11111010 (инверсия 00000101 = 11111010)
+0 = 00000000
−0 = 11111111
Где применяется Исторически использовался в некоторых mainframe'ах. Сегодня изредка встречается в сетевых протоколах (CRC, контрольные суммы).
03

Дополнительный код (two's complement) — стандарт

Для положительных — как прямой. Для отрицательных:

  1. Берём модуль числа в двоичном.
  2. Инвертируем все биты.
  3. Прибавляем 1.

Пример: −13 в 8 битах

|13| = 00001101
Инверсия: 11110010
+1: 11110011
🔢Интерактив 1: Бит-визуализатор — число в дополнительном коде
Кликай по битам, чтобы изменить. Старший бит = знак (красный).
76543210
Введи число или кликни по битам.
04

Симулятор переполнения int8/uint8

Покрути стрелку — увидишь, что происходит при выходе за диапазон

⚠️Интерактив 2: Круговая шкала — переполнение
−128
127
0
Нажимай +1 и −1, чтобы увидеть, как числа «оборачиваются» по кругу.
Важно для ЕГЭ При переполнении int8: 127 + 1 = −128 (а не 128, как в uint8). Это архитектурное решение процессора, и оно полностью совместимо с операциями АЛУ.
05

Сравнитель трёх кодов

Введи любое число — получи все три кода сразу с цветовой разметкой

⚖️Интерактив 3: Прямой, обратный и дополнительный — в одном окне

Нажми «Сравнить»

Ключевые отличия
  • Прямой код: старший бит = знак, остальные = модуль числа.
  • Обратный код: инвертируем ВСЕ биты (включая знаковый). Два нуля: +0 и −0.
  • Дополнительный код: обратный + 1. Один ноль. Вычитание = сложение. Стандарт современных CPU.
🎯

Мини-тест: 5 вопросов

XP: 0 / 100
🧩Быстрый тест по теме

Проверь себя! 5 вопросов, 20 XP за каждый правильный ответ.