Представление вещественных чисел
📌 1. Представление вещественных чисел в памяти компьютера
Компьютер представляет вещественные числа в двоичной системе, используя два основных способа:
– С фиксированной точкой (Fixed Point)
– С плавающей точкой (Floating Point)
🔸 2. Числа с фиксированной точкой (Fixed Point Numbers)
✔️ Описание:
Числа с фиксированной точкой используют определённое число бит для целой и дробной части. Позиция «запятой» (точки) фиксирована и не изменяется.
📘 Формат:
Если, например, отводится 8 бит, из них:
– 4 бита на целую часть
– 4 бита на дробную часть
📘 Пример:
01101010 → Целая часть: 0110 = 6, Дробная часть: 1010 = 0.625 → Итого: 6.625
Отрицательное число в доп. коде: 11101010 → -1.625
🔹 3. Числа с плавающей точкой (Floating Point Numbers)
✔️ Описание:
Число представляется в виде: (-1)^S × M × 2^E
Где:
– S — знак (1 бит)
– M — мантисса (нормализованная)
– E — экспонента (со смещением)
📘 Формат:
Мантисса: 8 бит, Экспонента: 4 бита, Смещение: Bias = 7
🧮 Пример 1: 6.625
– Двоичное: 110.101 → Нормализация: 1.10101 × 2^2
– Мантисса: 10101000, Экспонента: 1001 (2+7), Знак: 0
– Результат: 0 10101000 1001
🧮 Пример 2: -3.25
– Двоичное: 11.01 → Нормализация: 1.101 × 2^1
– Мантисса: 10100000, Экспонента: 1000 (1+7), Знак: 1
– Результат: 1 10100000 1000
🚩 Представление отрицательных чисел
🔸 В fixed-point используется дополнительный код (two’s complement):
1. Инвертируются все биты положительного числа
2. Прибавляется 1
Например, -5 (8 бит): 5 → 00000101 → инверсия → 11111010 → +1 → 11111011
🔸 В floating-point: знак определяется знаковым битом (1).
📊 Таблица: Примеры представления вещественных чисел
Десятичное число | Двоичная форма | Нормализованная форма | Мантисса (8 бит) | Экспонента (4 бит, Bias = 7) | Знак | Итоговое представление |
---|---|---|---|---|---|---|
6.625 | 110.101 |
1.10101 × 2^2 |
10101000 |
1001 (2+7) |
0 | 0 10101000 1001 |
-3.25 | 11.01 |
1.101 × 2^1 |
10100000 |
1000 (1+7) |
1 | 1 10100000 1000 |
0.5 | 0.1 |
1.0 × 2^-1 |
00000000 |
0110 (-1+7) |
0 | 0 00000000 0110 |
-1.75 | 1.11 |
1.11 × 2^0 |
11000000 |
0111 (0+7) |
1 | 1 11000000 0111 |
🧭 Визуальная схема: Формат с плавающей точкой
┌────────┬──────────────────────┬──────────────┐
│ Знак │ Мантисса (8 бит) │ Экспонента │
│ (1 бит)│ (без ведущей 1) │ (4 бита) │
└────────┴──────────────────────┴──────────────┘
Формула: (-1)^Знак × (1.Мантисса) × 2^(Экспонента – Bias)
Bias = 7 (так как 4 бита → 2^(4-1)-1)
Пример: -3.25
Биты: 1 10100000 1000
Значение: (-1)^1 × 1.101 × 2^(8-7) = -3.25
🔶 1. Задачи на числа с фиксированной точкой
📘 Задача 1: В системе с 8-битным фиксированным представлением (4 бита под целую и 4 под дробную часть) закодировано число:
01011000“
Что за число?
✅ Решение:
Разделим на части:
– Целая часть: `0101` = 5
– Дробная часть: `1000` = 8 / 16 = 0.5
Итог: 5.5
📘 Задача 2: Как представить число -2.75 в 8-битной системе с фиксированной точкой и дополнительным кодом?
✅ Решение:
1. +2.75 → `0010.1100` = `00101100`
2. Инвертируем: `11010011`
3. Прибавляем 1: `11010100`
Ответ: `11010100` — это -2.75 в доп. коде.
🔶 2. Задачи на числа с плавающей запятой
Формат:
– 1 бит знака
– 8 бит мантиссы (нормализованной, без ведущей 1)
– 4 бита экспоненты со смещением (bias = 7)
📘 Задача 1: Представить число **4.75** в этом формате.
✅ Решение:
1. Переводим в двоичный: `100.11`
2. Нормализация: `1.0011 × 2^2`
3. Мантисса: `00110000`
4. Экспонента: 2 + 7 = 9 → `1001`
5. Знак: 0
Ответ: `0 00110000 1001`
📘 Задача 2: Декодировать число: `1 10000000 1000`
✅ Решение:
1. Знак: 1 → число отрицательное
2. Мантисса: `1.10000000`
3. Экспонента: `1000` = 8, смещение 7 → 8 – 7 = 1
4. Значение: (-1)^1 × 1.1 × 2^1 = -1.5 × 2 = -3.0
Ответ: -3.0
Задачи на представление отрицательных чисел (fixed-point)
📘 Задача 3: Как представить -7 в 8-битной системе в дополнительном коде?
✅ Решение:
1. +7 → `00000111`
2. Инверсия: `11111000`
3. +1: `11111001`
Ответ: `11111001`
📘 Задача 4: Какое десятичное число закодировано как `11110110` в дополнительном коде?
✅ Решение:
1. Определяем, что старший бит = 1 → число отрицательное
2. Инверсия: `00001001`
3. +1: `00001010` = 10
4. Значит, число = -10