
- •2. Арифметические основы микропроцессорной техники
- •2.1. Системы счисления
- •2.2. Перевод из одной системы счисления в другую
- •2.2.1. Перевод целого десятичного числа в двоичную систему счисления
- •2.2.4. Перевод целого двоичного числа в шестнадцатеричную систему счисления
- •2.2.5. Перевод целого шестнадцатеричного числа в двоичную систему счисления
- •2.2.6. Перевод целого шестнадцатеричного числа в десятичную систему счисления
- •2.2.7. Перевод дробного десятичного числа в двоичную систему счисления
- •2.2.8. Перевод дробного двоичного числа в десятичную систему счисления
- •2.3. Представление информации в вычислительно технике
- •2.3.1. Целые числа без знака (unsigned)
- •2.3.2. Целые числа со знаком (signed)
- •2.3.3. Числа с плавающей точкой (float)
- •2.3.4. Символьные данные (char)
- •2.3.5.2. Представление десятичного числа в двоично-десятичном неупакованном формате
- •2.3.5.3. Перевод bcd упакованного формата в десятичное число
- •2.3.5.4. Перевод bcd неупакованного формата в десятичное число
- •2.4. Арифметические операции
- •2.4.1. Арифметическое сложение
- •2.4.1.1. Арифметическое сложение двоичных чисел
- •2.4.1.2. Арифметическое сложение шестнадцатеричных чисел
- •2.4.2. Арифметическое вычитание
- •2.4.3. Арифметическое умножение
- •2.4.4. Арифметическое деление
- •2.5. Проверка результатов выполнения арифметических операций
2.3.3. Числа с плавающей точкой (float)
Формат чисел с плавающей точкой используется для вещественных (дробных) чисел.
Табл.2.16. Форматы чисел с плавающей точкой в стандарте IEEE 754
Тип данных |
Формат |
Размер n, бит |
Диапазон |
float |
Одинарная точность |
32 |
3.4E-38 … 3.4E+38 |
double |
Двойная точность |
64 |
1.7E-308 … 1.7E+308 |
long double |
Повышенная точность |
80 |
3.4E-4932 … 3.4E+4932 |
Формат 32-разрядного двоичного числа с плавающей точкой приведен в табл2.17.
Табл.2.17. Структура 32-разрядного двоичного формата с плавающей точкой
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
+/- |
Смещенный порядок, 8 бит |
Мантисса, 23 бита |
Примечание: бит 31 – знак числа.
Пример: Представить положительное вещественное десятичное число +125,5710 в 32-разрядном двоичном формате (float) с плавающей точкой.
Для представления положительного числа в формате с плавающей точкой выполняются следующие операции:
А) Перевод целой части десятичного числа: 12510 = 11111012.
Б) Перевод дробной части десятичного числа: 0,5710 = 0,100100012
В) Запись двоичного числа в формате с фиксированной точкой: 125,5710 = 1111101,100100012.
Г) Нормализация числа c фиксированной точкой.
Нормализованное число – это число, записанное в экспоненциальном виде. Нормализация выполняется сдвигом точки (запятой) вправо или влево до позиции, в которой в целой части остается одна значащая единица. В результате получается нормализованное двоичное число с порядком:
1111101,100100012 = 1,111101100100012 ∙ 26 (порядок числа равен 6).
Д) Определение знака, мантиссы и смещенного порядка
Знак числа 125,5710 положительный, поэтому в знаковом 31-ом разряде записывается 0 (ноль).
Мантисса представляет собой дробную часть нормализованного числа: 11110110010001 (целая часть нормализованного числа не записывается и не сохраняется в памяти).
Смещенный порядок определяется как сумма нулевого смещенного порядка и порядка нормализованного числа.
В стандарте IEEE 754 нулевой смещенный порядок равен 12710 = 0111 11112.
Порядок нормализованного числа равен 610.
Рассчитываем смещенный порядок: 12710 + 610 = 13310.
Получаем шестой смещенный порядок равный 13310 = 1000 01012.
Е) Запись нормализованного числа в формате с плавающей точкой приведена в табл.2.18.1.
Табл.2.18.1. Число 125,5710 в формате с плавающей точкой
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
+ |
смещенный порядок |
мантисса |
Ответ: десятичное число 125,5710 в формате с плавающей точкой имеет вид:
0 10000101 111100110010001111000002.
Пример: Представить отрицательное вещественное десятичное число -125,5710 в 32-разрядном двоичном формате (float) с плавающей точкой. Отрицательные числа с плавающей точкой представляются прямым кодом:
Для представления отрицательного числа в формате с плавающей точкой выполняются следующие операции:
А) Перевод целой части десятичного числа, взятого по модулю: [12510] = 11111012.
Б) Перевод дробной части десятичного числа, взятого по модулю: [0,5710] = 0,100100012
В) Запись двоичного числа в формате с фиксированной точкой: 125,5710 = 1111101,100100012.
Г) Нормализация числа c фиксированной точкой.
Нормализованное число – это число, записанное в экспоненциальном виде. Нормализация выполняется сдвигом точки (запятой) вправо или влево до позиции, в которой в целой части остается одна значащая единица. В результате получается нормализованное двоичное число с порядком:
1111101,100100012 = 1,111101100100012 ∙ 26 (порядок числа равен 6).
Д) Определение знака, мантиссы и смещенного порядка
Знак числа -125,5710 отрицательный, поэтому в знаковом 31-ом разряде записывается 1 (единица).
Мантисса представляет собой дробную часть нормализованного числа: 11110110010001 (целая часть нормализованного числа не записывается и не сохраняется в памяти).
Смещенный порядок определяется как сумма нулевого смещенного порядка и порядка нормализованного числа.
В стандарте IEEE 754 нулевой смещенный порядок равен 12710 = 0111 11112.
Порядок нормализованного числа равен 610.
Рассчитываем смещенный порядок: 12710 + 610 = 13310.
Получаем шестой смещенный порядок равный 13310 = 1000 01012.
Е) Запись нормализованного числа в формате с плавающей точкой приведена в табл.2.18.2.
Табл.2.18.2. Число -125,5710 в формате с плавающей точкой
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
- |
смещенный порядок |
мантисса |
Ответ: десятичное число -125,5710 в формате с плавающей точкой имеет вид:
1 10000101 111100110010001111000002.