Задание 3
Представить заданные вещественные числа А и В в формате с плавающей точкой. Выполнить сложение этих чисел в различных числовых форматах: а) как числа половинной точности, б) как числа двойной точности (см. описание типов). Все стадии решения представить в двоичной системе счисления (или в 16-ой для компактности записи). Оценить погрешность вычисления, взяв за основу истинный результат вычисления. В случае появления ошибки вычисления, аргументировать причины такой ошибки.
А = 100,3, В = 201,48.
Вариант А (сложение чисел половинной точности).
Переведем данные числа в двухзначную систему счисления:
100,310=1100100,10011=1,10010010011*1026
10010=11001002
0,310=(10011) данное число будет периодичным. Возьмем первые пять бит получившегося периода.
р=21=101012
В результате получим число:
А=0 10101 10010010011
В = 201,48
Проделаем такие же операции с данным числом
201,4810=11001001,111102=1,1001001111102*1026
20110=110010012
0,4810=111102 так как число получается так же периодичным берем только первые пять бит.
р=21=101012
В=0 10101 100100111110
А+В=М1+М2
1,10010010011*1026+1,1001001111102*1026=10,010111010001*1026=302,1610
=301,78-302,16=0,38
Причиной данной ошибки является то, что в силу ограниченности мантиссы произошло отбрасывание значащих бит в дробной части исходных чисел.
Вариант Б (Сложение чисел двойной точности)
При использовании чисел двойной точности погрешности вычислений значительно снижается, так как порядок числа занимает 11, а не 5 бит, а мантисса занимает уже целых 52 бита в отличии 10 битной мантиссы числа половинной точности.
Так же переведем данные числа в двоичную систему счисления. Получим следующее:
100,310=1,10010001001100110011002 * 106
10010=11001002
0,310=0.01001100110011002 данное число будет периодичным. Запишем период до заполнении 52 бит мантиссы.
р=6+1023=1029=100000001012
В результате получим число:
А=0 10000000101 1001000100110011001100010011001100110001001100110011
В = 201,48
Проделаем такие же операции с данным числом
201,4810= 11,00100101111010111000012 * 106
20110= 110010012
0,4810= 0.01111010111000012 так как число получается так же периодичным запишем период до заполнения мантиссы.
р=7+1023=1030=100000001102
В=0 10000000110 0010010010111101011100001011110101110000101111010111
А+В=М1+М2
1,1001000100110011001100010011001100110001001100110011*101029+11,0010010111101011100001011110101110000101111010111*101030= [Так как р1<р2 => что М3*np2] =10,01011010001100001111101010000101001100110011100101101011111100*101030
Rez=0 10000000110 00011000011111010100001010011001100111001011010111111002
10,01011010001100001111101010000101001100110011100101101011111100*107=100101101, 00010011011111101010000101001100110011100101101011111100=301,78
Задание 4
Для данного целого числа А определенного типа отдельно осуществить следующие виды битовых сдвигов
а) логический
б) арифметический
в) циклический
А = 46 (a: shortint)
а) на 4 бита влево,
б) на 5 бит вправо,
в) на 4 бита вправо.
Переведем данное число в двоичную систему счисления.
4610 =1011102
При логическом сдвиге нужно просто переместить биты нужное количество вправо или влево.
В нашем случае нужно передвинуть двоичное число 1011102 на 4 бита влево
В результате чего получим:
1011102 shl 4=102=210
При арифметическом сдвиге учитывается знаковый бит числа, в нашем случае это 1. Следовательно получим:
1011102 sar 5 = 1111112=-312
При циклическом сдвиге происходит как бы «круговое» перемещение бит из конца в начало. При сдвиге получим следующие значения:
1011102 ror 4=1110102=-262