Главная страница

Представление дробных чисел в формате IEEE-754. Информатика КР. Представление дробных чисел в формате ieee754


Скачать 56.03 Kb.
НазваниеПредставление дробных чисел в формате ieee754
АнкорПредставление дробных чисел в формате IEEE-754
Дата25.11.2021
Размер56.03 Kb.
Формат файлаdocx
Имя файлаИнформатика КР.docx
ТипРешение
#282089



Министерство науки и высшего образования Российской Федерации

Муромский институт (филиал)

Государственного образовательного учреждения высшего образования

«Владимирский государственный университет

имени Александра Григорьевича и Николая Григорьевича Столетовых»

(МИ ВлГУ)



Факультет РЭКС

Кафедра РТ


КОНТРОЛЬНАЯ

РАБОТА

По: Информатике
Тема: Представление дробных чисел в формате IEEE-754


Руководитель
 

(фамилия, инициалы)



(подпись) (дата)

Студент

(группа)



(фамилия, инициалы)



(подпись) (дата)



Муром 2021 год

  1. Цель занятия - Приобретение навыков перевода дробных чисел в двоичный код. - Приобретение навыков использования дробных чисел в формате IEEE 754.

  2. Постановка задачи - Перевести заданное число в формат IEEE 754. - Перевести, используя формулы, число, представленное в формате IEEE 754, в десятичную форму.


Задание №1

Представить нормализованное число 213,07 в формате IEEE 754

1.1 одинарной точности,

1.2 двойной точности.
Решение 1.1

Переведем число в двоичное представление. 213 = 110101012
Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.07*2 = 0.14 (целая часть 0); 0.14*2 = 0.28 (целая часть 0); 0.28*2 = 0.56 (целая часть 0); 0.56*2 = 1.12 (целая часть 1); 0.12*2 = 0.24 (целая часть 0); 0.24*2 = 0.48 (целая часть 0); 0.48*2 = 0.96 (целая часть 0); 0.96*2 = 1.92 (целая часть 1); 0.92*2 = 1.84 (целая часть 1); 0.84*2 = 1.68 (целая часть 1); 0.68*2 = 1.36 (целая часть 1); 0.36*2 = 0.72 (целая часть 0); 0.72*2 = 1.44 (целая часть 1); 0.44*2 = 0.88 (целая часть 0); 0.88*2 = 1.76 (целая часть 1); 0.76*2 = 1.52 (целая часть 1); 0.52*2 = 1.04 (целая часть 1); 0.04*2 = 0.08 (целая часть 0); 0.08*2 = 0.16 (целая часть 0); 0.16*2 = 0.32 (целая часть 0); 0.32*2 = 0.64 (целая часть 0); 0.64*2 = 1.28 (целая часть 1); 0.28*2 = 0.56 (целая часть 0)
Получаем число в 2-ой системе счисления: 00010001111010111000010
0.07 = 000100011110101110000102
В итоге получаем число: 11010101.000100011110101110000102
Сдвинем число на 7 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.101010100010001111010111000010
Экспонента exp2=7
Преобразование двоичного нормализованного числа в 32 битный формат IEEE 754.
Первый бит отводится для обозначения знака числа. Поскольку число положительное, то первый бит равен 0
Следующие 8 бит (с 2-го по 9-й) отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте в половину байта +127. Таким образом, наша экспонента: 7 + 127 = 134
Переведем экспоненту в двоичное представление.
134 = 100001102
Оставшиеся 23 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 ≤ M <2. Для экономии, единицу не записывают, а записывают только остаток от мантиссы: 10101010001000111101011
Для перевода необходимо умножить разряд числа на соответствующую ему степень разряда.
10101010001000111101011 = 222*1 + 221*0 + 220*1 + 219*0 + 218*1 + 217*0 + 216*1 + 215*0 + 214*0 + 213*0 + 212*1 + 211*0 + 210*0 + 29*0 + 28*1 + 27*1 + 26*1 + 25*1 + 24*0 + 23*1 + 22*0 + 21*1 + 20*1 = 4194304 + 0 + 1048576 + 0 + 262144 + 0 + 65536 + 0 + 0 + 0 + 4096 + 0 + 0 + 0 + 256 + 128 + 64 + 32 + 0 + 8 + 0 + 2 + 1 = 5575147
В десятичном коде мантисса выражается числом 5575147
В результате число 213.07 представленное в IEEE 754 c одинарной точностью равно 01000011010101010001000111101011.
Переведем в шестнадцатеричное представление.
Разделим исходный код на группы по 4 разряда.
010000110101010100010001111010112 = 0100 0011 0101 0101 0001 0001 1110 1011 2
Получаем число:
0100 0011 0101 0101 0001 0001 1110 1011 2 = 435511EB16
Проверим правильность перевода.
Чтобы записать число в стандарте IEEE 754 или восстановить его, необходимо знать три параметра:
S - бит знака (31-й бит).
E - смещенная экспонента (30-23 биты).
M - остаток от мантиссы (22-0 биты).
Формула для получения десятичного числа из числа IEEE754 одинарной точности:
F = (-1)S2(E-127)(1+M/223)
F = (-1)02(134-127)(1+5575147/223) = 128*1.6646093130112 = 213.06999206543.
Решение 1.2

Переведем число в двоичное представление 213 = 110101012
Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.07*2 = 0.14 (целая часть 0); 0.14*2 = 0.28 (целая часть 0); 0.28*2 = 0.56 (целая часть 0); 0.56*2 = 1.12 (целая часть 1); 0.12*2 = 0.24 (целая часть 0); 0.24*2 = 0.48 (целая часть 0); 0.48*2 = 0.96 (целая часть 0); 0.96*2 = 1.92 (целая часть 1); 0.92*2 = 1.84 (целая часть 1); 0.84*2 = 1.68 (целая часть 1); 0.68*2 = 1.36 (целая часть 1); 0.36*2 = 0.72 (целая часть 0); 0.72*2 = 1.44 (целая часть 1); 0.44*2 = 0.88 (целая часть 0); 0.88*2 = 1.76 (целая часть 1); 0.76*2 = 1.52 (целая часть 1); 0.52*2 = 1.04 (целая часть 1); 0.04*2 = 0.08 (целая часть 0); 0.08*2 = 0.16 (целая часть 0); 0.16*2 = 0.32 (целая часть 0); 0.32*2 = 0.64 (целая часть 0); 0.64*2 = 1.28 (целая часть 1); 0.28*2 = 0.56 (целая часть 0); 0.56*2 = 1.12 (целая часть 1); 0.12*2 = 0.24 (целая часть 0): 0.24*2 = 0.48 (целая часть 0); 0.48*2 = 0.96 (целая часть 0); 0.96*2 = 1.92 (целая часть 1); 0.92*2 = 1.84 (целая часть 1); 0.84*2 = 1.68 (целая часть 1); 0.68*2 = 1.36 (целая часть 1); 0.36*2 = 0.72 (целая часть 0); 0.72*2 = 1.44 (целая часть 1); 0.44*2 = 0.88 (целая часть 0); 0.88*2 = 1.76 (целая часть 1); 0.76*2 = 1.52 (целая часть 1); 0.52*2 = 1.04 (целая часть 1); 0.04*2 = 0.08 (целая часть 0); 0.08*2 = 0.16 (целая часть 0); 0.16*2 = 0.32 (целая часть 0); 0.32*2 = 0.64 (целая часть 0); 0.64*2 = 1.28 (целая часть 1); 0.28*2 = 0.56 (целая часть 0); 0.56*2 = 1.12 (целая часть 1); 0.12*2 = 0.24 (целая часть 0); 0.24*2 = 0.48 (целая часть 0); 0.48*2 = 0.96 (целая часть 0); 0.96*2 = 1.92 (целая часть 1); 0.92*2 = 1.84 (целая часть 1); 0.84*2 = 1.68 (целая часть 1); 0.68*2 = 1.36 (целая часть 1); 0.36*2 = 0.72 (целая часть 0)
Получаем число в 2-ой системе счисления: 0001000111101011100001010001111010111000010100011110
0.07 = 00010001111010111000010100011110101110000101000111102
В итоге получаем число: 11010101.00010001111010111000010100011110101110000101000111102
Сдвинем число на 7 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.10101010001000111101011100001010001111010111000010100011110
Экспонента exp2=7
Преобразование двоичного нормализованного числа в 64 битный формат IEEE 754.
Первый бит отводится для обозначения знака числа. Поскольку число положительное, то первый бит равен 0
Следующие 11 бит (с 2-го по 12-й) отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте +1023. Таким образом, наша экспонента: 7 + 1023 = 1030
Переведем экспоненту в двоичное представление.
1030 = 100000001102
Оставшиеся 52 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 ≤ M <2. Для экономии, единицу не записывают, а записывают только остаток от мантиссы: 1010101000100011110101110000101000111101011100001010
В результате число 213.07 представленное в IEEE 754 c двойной (double) точностью равно 0100000001101010101000100011110101110000101000111101011100001010.
Переведем в шестнадцатеричное представление.
Разделим исходный код на группы по 4 разряда.
01000000011010101010001000111101011100001010001111010111000010102 = 0100 0000 0110 1010 1010 0010 0011 1101 0111 0000 1010 0011 1101 0111 0000 1010 2
Получаем число:
0100 0000 0110 1010 1010 0010 0011 1101 0111 0000 1010 0011 1101 0111 0000 1010 2 = 406AA23D70A3D70A16.

Задание №2

Перевести число 0100 1011 1101 1000 0101 0000 0000 0000, заданное в формате IEEE754 в десятичную форму
Решение

Чтобы записать число в стандарте IEEE 754 или восстановить его, необходимо знать три параметра:
S - бит знака (63-й бит).
E - смещенная экспонента (62-50 биты).
M - остаток от мантиссы (51-0 биты).
Переведем число 0100 1011 1101 1000 0101 0000 0000 0000 в двоичное представление.
0000000100000000 0001000000010001 0001000100000001 0001000000000000 0000000100000001 0000000000000000 0000000000000000 0000000000000000
Получаем число:
0100 1011 1101 1000 0101 0000 0000 000016 = 0000000100000000 0001000000010001 0001000100000001 0001000000000000 0000000100000001 0000000000000000 0000000000000000 00000000000000002
63 разряд равен 0, следовательно, число положительное
Выделяем разряды смещенной экспоненты (62-50): 00000010000
Переводим в десятичное представление.
Для перевода необходимо умножить разряд числа на соответствующую ему степень разряда.
00000010000 = 210*0 + 29*0 + 28*0 + 27*0 + 26*0 + 25*0 + 24*1 + 23*0 + 22*0 + 21*0 + 20*0 = 0 + 0 + 0 + 0 + 0 + 0 + 16 + 0 + 0 + 0 + 0 = 16
Таким образом, экспонента равна: 16 - 1023 = -1007
Выделяем разряды мантиссы (51-0): 0000 0001000000010001 0001000100000001 0001000000000. Добавляем 1. Следовательно, мантисса равна 1.0000 0001000000010001 0001000100000001 0001000000000
Сдвигаем полученную мантиссу на -1007 разрядов вправо. Получаем: 0.0000 0001000000010001 0001000100000001 00010000000001
Получаем десятичный код числа:
Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
0 = 20*0 = 0 = 0
Для перевода дробной части необходимо разделить разряд числа на соответствующую ему степень разряда.
0000 0001000000010001 0001000100000001 00010000000001 = 2-1*0 + 2-2*0 + 2-3*0 + 2-4*0 + 2-5* + 2-6*0 + 2-7*0 + 2-8*0 = 0
В итоге получаем число 0
Таким образом, число 0100 1011 1101 1000 0101 0000 0000 0000 в десятичном коде представляет собой число 0.







написать администратору сайта