Скачиваний:
16
Добавлен:
16.01.2016
Размер:
596.47 Кб
Скачать
    1. Задание 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

А+В=М12

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

А+В=М12

1,1001000100110011001100010011001100110001001100110011*101029+11,0010010111101011100001011110101110000101111010111*101030= [Так как р12 => что М3*np2] =10,01011010001100001111101010000101001100110011100101101011111100*101030

Rez=0 10000000110 00011000011111010100001010011001100111001011010111111002

10,01011010001100001111101010000101001100110011100101101011111100*107=100101101, 00010011011111101010000101001100110011100101101011111100=301,78

    1. Задание 4

Для данного целого числа А определенного типа отдельно осуществить следующие виды битовых сдвигов

а) логический

б) арифметический

в) циклический

А = 46 (a: shortint)

а) на 4 бита влево,

б) на 5 бит вправо,

в) на 4 бита вправо.

Переведем данное число в двоичную систему счисления.

4610 =1011102

    1. При логическом сдвиге нужно просто переместить биты нужное количество вправо или влево.

В нашем случае нужно передвинуть двоичное число 1011102 на 4 бита влево

В результате чего получим:

1011102 shl 4=102=210

    1. При арифметическом сдвиге учитывается знаковый бит числа, в нашем случае это 1. Следовательно получим:

1011102 sar 5 = 1111112=-312

    1. При циклическом сдвиге происходит как бы «круговое» перемещение бит из конца в начало. При сдвиге получим следующие значения:

1011102 ror 4=1110102=-262

Соседние файлы в предмете Алгоритмические языки и основы программирования