Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба ит 5

.pdf
Скачиваний:
18
Добавлен:
16.01.2016
Размер:
445.02 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«Белгородский Государственный Технологический Университет им. В.Г. Шухова» (БГТУ им. В.Г. Шухова)

ИИТУС

Кафедра: «Техническая кибернетика»

Лабораторная работа №5

дисциплина: «Информационные технологии» тема: «Кодирование числовой информации.

Применение побитовых операций.»

Выполнил:

студент группы УС-11 Татаринов Алексей

Принял:

ст. препод. кафедры ТК Бушуев Д.А.

Белгород 2014

Содержание

1.

Цель работы...............................................................................................................................

3

2.

Список индивидуальных заданий .......................................................................................

4

3.

Выполнение работы.................................................................................................................

6

 

3.1

Задание 1..............................................................................................................................

6

 

3.2

Задание 2..............................................................................................................................

8

 

3.3

Задание 3..............................................................................................................................

9

 

3.4

Задание 4 ............................................................................................................................

11

 

3.5

Задание 5............................................................................................................................

12

 

3.6

Задание 6............................................................................................................................

14

Заключение........................................................................................................................................

15

2

1. Цель работы

Изучение различных числовых форматов целых и вещественных чисел, а также правил выполнения различных арифметических и логических операций над ними.

Применение побитовых операций над числами для проверки определенных свойств числа.

3

2.Список индивидуальных заданий

1)Для данной программы вычислить итоговый результат (в десятичной системе счисления) со всеми расчетами в двоичной системе счисления. Задание выполнить в двух вариантах, в зависимости от типа переменных:

Var

Var

a, b, rez : shortint;

a, b, rez : byte;

2)Вычислите значение указанного выражения. Вычисления и ответ представить в двоичной системе счисления.

3)Представить заданные вещественные числа А и В в формате с плавающей точкой. Выполнить сложение этих чисел в различных числовых форматах: а) как числа половинной точности, б) как числа двойной точности (см. описание типов). Все стадии решения представить в двоичной системе счисления (или в 16-ой для компактности записи). Оценить погрешность вычисления, взяв за основу истинный результат вычисления.

Вслучае появления ошибки вычисления, аргументировать причины такой ошибки.

4)Для данного целого числа А определенного типа отдельно осуществить

следующие виды битовых сдвигов а) логический б) арифметический в) циклический

со всеми выкладками в двоичной системе счисления. Запишите получившиеся результаты в десятичной системе счисления.

5) Используя арифметические и побитовые операции, осуществите указанные действия, написав необходимую последовательность команд на одном из языков программирования. Привести два примера работы данной программы над разными числами со всеми выкладками в двоичной системе счисления.

Детали реализации:

Во всех таких задачах предполагается, что а) все используемые числа являются однобайтовыми без знаковыми целыми

(если не указано отдельно другое описание числа), б) отсчет бит в байте начинается с единицы, начиная с младшего бита.

в) при описании маски используется следующая интерпретация:

символ «*» означает любую последовательность бит.

6) Для заданного IP адреса и маски подсети рассчитать следующие параметры (см. дополнительную теоретическую часть):

а) адреса хостов в данной подсети (минимальный/максимальный IP), б) адрес подсети, в) число хостов,

г) широковещательный адрес (Broadcast), д) префикс сети.

4

Вариант 9.

Задание 1

begin

a := 13;

a := not a and (a - $13); b := $11;

rez := a - b; writeln(rez);

end.

Задание 2:

1018 : 1012 + 1019(10110 – 1018) + 10116

Задание 3:

А = 100,3, В = 201,48.

Задание 4:

А = 46 (a: shortint)

а) на 4 бита влево, б) на 5 бит вправо, в) на 4 бита вправо.

Задание 5:

а) проверить, присутствует ли в данном байте целиком битовая последовательность «111111»,

б) заменить в данном байте отдельные биты так, чтобы данный байт удовлетворял битовой маске «??10??10».

Задание 6:

IP: 148.200.199.250,

маска подсети: 255.255.255.240.

5

3. Выполнение работы

3.1Задание 1.

Для данной программы вычислить итоговый результат (в десятичной системе счисления) со всеми расчетами в двоичной системе счисления. Задание выполнить в двух вариантах, в зависимости от типа переменных:

Var

 

Var

a, b, rez : shortint;

a, b, rez : byte;

begin

 

 

a :=

13;

 

a :=

not a and (a - $13);

 

b :=

$11;

 

rez := a - b; writeln(rez);

end.

Вариант 1.

При типе данных shortint число должно входить в диапазон от -128 до 127 и занимать 1 байт памяти.

Рассмотрим часть кода нашей программы:

a := 13;

a := not a and (a - $13);

Оператор not делает из числа 13 число -14. Рассмотрим, как выполняется данное преобразование:

1310=11012

Дополним получившееся число до 8 бит:

000011012

Оператор not делает следующую операцию с числом:

not 000011012=111100102=-1410

Рассмотрим оставшийся код:

b := $11; rez := a - b;

В этой части выполняется вычитание из десятичного числа -14 шестнадцатеричного числа 11.

Переведем оба числа в двоичную сс. В результате чего получим:

1116=0000100012 -1410=111100102

Выполним вычитание и переведем результат в десятичную систему счисления:

111100102-100012=111010012=-3110

6

Вариант 2.

При типе данных byte число может принимать значения в диапазоне от 0 до 255 и занимать 1 байт памяти.

Так же рассмотрим фрагмент нашего кода:

a := 13;

a := not a and (a - $13);

При выполнении данного фрагмента происходит преобразование десятичного числа 13 в число 242. Рассмотрим подробнее донный процесс.

Тип данных byte это тип без знака, а, следовательно, число не может принимать отрицательных значений в отличии от типа shortint. И поэтому после оператора not происходит не преобразование данного числа в отрицательное, а как бы его циклический перенос в начало диапазона значений, но так как число не может быть больше 255 то происходит вычитание из максимального значения (255) исходного числа (в нашем случае это 13), в результате чего мы получаем значение 242.

Переведем получившееся число в двоичную систему:

24210=111100102

Рассмотрим оставшийся код:

b := $11;

rez := a - b;

В этой части выполняется вычитание из десятичного числа 242 шестнадцатеричного числа 11.

Переведем оба числа в двоичную сс. В результате чего получим:

1116=0000100012

24210=111100102

Выполним вычитание и переведем результат в десятичную систему счисления:

111100102-100012=111010012=22510

7

3.2 Задание 2.

Вычислите значение указанного выражения. Вычисления и ответ представить в двоичной системе счисления.

1018 : 1012 + 1019(10110 – 1018) + 10116

Для выполнения данного задания переведем все числа в двоичную систему счисления:

1018 = 10000012

1012 = 1012

1019 = 10100102

10110 = 11001012

1018 = 10000012

10116 = 1000000012

Выполним все действия в нужной очередности.

1.11001012-10000012=1001002

2.10100102*1001002=1011100010002

3.10000012 / 1012=11012

4.11012+1011100010002=1011100101012

5.1011100101012+1000000012=1100100010012

8

3.3 Задание 3

Представить заданные вещественные числа А и В в формате с плавающей точкой. Выполнить сложение этих чисел в различных числовых форматах: а) как числа половинной точности, б) как числа двойной точности (см. описание типов). Все стадии решения представить в двоичной системе счисления (или в 16-ой для компактности записи). Оценить погрешность вычисления, взяв за основу истинный результат вычисления. В случае появления ошибки вычисления, аргументировать причины такой ошибки.

А = 100,3, В = 201,48.

Вариант А (сложение чисел половинной точности).

Переведем данные числа в двухзначную систему счисления:

100,310=1100100,10011=1,10010010011*1026

10010=11001002

0,310=(10011) данное число будет периодичным. Возьмем первые пять бит получившегося периода.

2

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

А=0 10101 10010010011

В= 201,48

Проделаем такие же операции с данным числом

201,4810=11001001,111102=1,1001001111102*1026

20110= 110010012

0,4810=111102 так как число получается так же периодичным берем только первые пять бит.

2

В=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 битной мантиссы числа половинной точности.

9

Так же переведем данные числа в двоичную систему счисления. Получим следующее:

100,310=1,10010001001100110011002 * 106

10010=11001002

0,310=0.01001100110011002 данное число будет периодичным. Запишем период до заполнении 52 бит мантиссы.

100000001012

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

А=0 10000000101 1001000100110011001100010011001100110001001100110011

В = 201,48

Проделаем такие же операции с данным числом

201,4810= 1,100100101111010111000012 * 107

201,4810= 0,1100100101111010111000012 * 106

20110= 110010012

0,4810= 0.01111010111000012 так как число получается так же периодичным запишем период до заполнения мантиссы.

100000001012 В=0 10000000101 0110010010111101011100001011110101110000101111010111

А+В=М12

1,1001000100110011001100010011001100110001001100110011*106+0,011001001011110101110 00010111101011100001011110101110*107=1.00101101110001111010111000010100011110101110 0001010001111010*108= = 0 10000000111 0010110111000111101011100001010001111010111000010100

10