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

лаба ит 5

.docx
Скачиваний:
12
Добавлен:
16.01.2016
Размер:
71.53 Кб
Скачать

Министерство образования и науки РФ

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

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

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

ИИТУС

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

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

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

тема: «Кодирование числовой информации.

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

Выполнил: студент группы УС-11

Татаринов Алексей

Принял:

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

Белгород 2014

Содержание

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

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

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

3.1Задание 1. 6

3.2Задание 2. 8

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

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

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

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

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

Var

a, b, rez : shortint;

Var

a, b, rez : byte;

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

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

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

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

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

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

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

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

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

Во всех таких задачах предполагается, что

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

б) отсчет бит в байте начинается с единицы, начиная с младшего бита.

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

символ «?» означает ровно один произвольный бит.

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

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

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

б) адрес подсети,

в) число хостов,

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

д) префикс сети.

Вариант 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.

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

    1. Задание 1.

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

Var

a, b, rez : shortint;

Var

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

Вариант 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

    1. Задание 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