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

Плакат “Представление вещественных чисел” | Инфографика на казахском и русском языках

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

📌 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