Представление целых чисел в памяти компьютера
Содержание раздела
- 🔢 Представление целых чисел
- 📏 Ограниченность диапазона чисел
- ⚠️ Переполнение разрядной сетки
- ➕➖ Беззнаковые и знаковые данные
- 🔣 Двоичный дополнительный код
- 🔧 Побитовые логические операции
- ↔️ Логические и арифметические сдвиги
- 🔐 Шифрование с помощью XOR
🔢 Представление целых чисел
Компьютер представляет целые числа в двоичной системе счисления. Каждое число хранится в виде последовательности битов (0 и 1).
Важно: В современных компьютерах обычно используются 32-битные или 64-битные представления целых чисел.
Пример: Число 5 в 8-битном представлении: 00000101
Число 42 в 8-битном представлении: 00101010
📏 Ограниченность диапазона чисел
Из-за фиксированного количества бит диапазон представляемых чисел ограничен. Чем больше бит отводится под число, тем больше диапазон.
| Количество бит | Беззнаковый диапазон | Знаковый диапазон |
|---|---|---|
| 4 | 0 ÷ 15 | -8 ÷ +7 |
| 8 | 0 ÷ 255 | -128 ÷ +127 |
| 16 | 0 ÷ 65 535 | -32 768 ÷ +32 767 |
| 32 | 0 ÷ 4 294 967 295 | -2 147 483 648 ÷ +2 147 483 647 |
Пример: В 8-битной беззнаковой переменной можно хранить числа от 0 до 255. Число 256 в такой переменной представить невозможно.
⚠️ Переполнение разрядной сетки
Переполнение происходит, когда результат операции выходит за границы диапазона, который может представить разрядная сетка.
Пример переполнения в 8-битной беззнаковой арифметике
Вычисление: 200 + 100 = 300
Результат в 8 битах: Отбрасываем старший бит
Вместо 300 получаем 44 (300 — 256)
Важно: Переполнение может приводить к серьезным ошибкам в программах, особенно в критических системах.
➕➖ Беззнаковые и знаковые данные
Целые числа могут представляться как беззнаковые (только положительные) и знаковые (положительные и отрицательные).
Сравнение беззнакового и знакового представления
| Характеристика | Беззнаковое представление | Знаковое представление |
|---|---|---|
| Диапазон (8 бит) | 0 ÷ 255 | -128 ÷ +127 |
| Старший бит | Часть числа | Знак (0 = +, 1 = -) |
| Представление нуля | Одно: 00000000 | Одно: 00000000 |
| Максимальное значение | 2n — 1 | 2n-1 — 1 |
| Минимальное значение | 0 | -2n-1 |
Пример: Число 42 в 8-битном представлении:
Беззнаковое: 00101010
Знаковое: 00101010 (то же самое, так как число положительное)
🔣 Двоичный дополнительный код
Для представления отрицательных чисел в компьютере используется дополнительный код (two’s complement). Это позволяет выполнять вычитание через сложение.
Пример: представление числа -5 в 8-битном дополнительном коде
- Представляем 5 в двоичной системе: 00000101
- Инвертируем биты: 11111010 (обратный код)
- Добавляем 1: 11111010 + 1 = 11111011
- Результат: 11111011 — это -5 в дополнительном коде
Преимущества дополнительного кода: единое представление нуля, простые алгоритмы сложения и вычитания, естественное переполнение.
Пример: Проверим, что 5 + (-5) = 0:
00000101 (5) + 11111011 (-5) = 100000000
Отбрасываем старший бит (переполнение): 00000000 (0)
🔧 Побитовые логические операции
Побитовые операции выполняются над соответствующими битами чисел. Основные побитовые операции: И, ИЛИ, НЕ, XOR.
Примеры побитовых операций (8 бит)
| Операция | Пример | Результат |
|---|---|---|
| AND (&) | 00110101 & 00001111 | 00000101 |
| OR (|) | 00110101 | 00001111 | 00111111 |
| XOR (^) | 00110101 ^ 00001111 | 00111010 |
| NOT (~) | ~00110101 | 11001010 |
Пример: Использование AND для выделения отдельных битов:
number & 1 — проверка младшего бита (четность)
number & 0xF — получение младших 4 битов
↔️ Логические и арифметические сдвиги
Сдвиги — это побитовые операции, перемещающие биты влево или вправо.
Сравнение типов сдвигов (на примере 8-битного числа 10110110)
| Тип сдвига | Влево на 1 | Вправо на 1 |
|---|---|---|
| Логический | 01101100 | 01011011 |
| Арифметический | 01101100 | 11011011 (знак сохранен) |
| Циклический | 01101101 | 01011011 |
Применение сдвигов: Умножение и деление на степени двойки, извлечение битовых полей, криптография, оптимизация кода.
Пример: Арифметический сдвиг вправо на 1 эквивалентен делению на 2 с сохранением знака. Логический сдвиг влево на 1 эквивалентен умножению на 2.
🔐 Шифрование с помощью XOR
Операция XOR обладает уникальными свойствами, которые делают ее полезной для шифрования данных.
Процесс шифрования XOR
Шифрование:
Расшифрование:
Важно: XOR-шифрование уязвимо к атакам при повторном использовании ключа или при использовании короткого ключа. Это простой метод, не обеспечивающий высокий уровень безопасности.
Пример: В аппаратном обеспечении XOR часто используется для простых операций шифрования и создания псевдослучайных последовательностей.
Заключение
Понимание представления целых чисел в памяти компьютера необходимо для написания корректных и эффективных программ. Знание особенностей беззнакового и знакового представления, дополнительного кода, побитовых операций и сдвигов помогает избежать распространенных ошибок и оптимизировать вычисления.
Для ЕГЭ: Особое внимание уделите преобразованию чисел в дополнительный код, операциям сдвига и побитовым операциям. Помните об ограниченности диапазона чисел и возможности переполнения.