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

    1. Задание 5

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

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

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

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

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

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

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

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

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

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

Задание а

Так как мы используем целое однобайтовое число без знака то битовой последовательности «111111» удовлетворяет только число 1510 или F16.

Следовательно, нам нужно сравнить какое-либо число с исходным числом. На языке программирования Pascal это будет выглядеть следующим образом:

Задание б

Для того чтобы проверить удовлетворяет данный байт данной битовой маске воспользовались логическим умножением проверяемого числа на число 100010 = 2216

Затем выполним сравнение данного числа и получим следующий результат:

    1. Задание 6

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

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

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

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

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

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

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

Выполнение:

  1. Переведем IP адрес и маску подсети в двоичный формат, получим: маска подсети - 11111111.11111111.11111111.11110000; IP адрес – 10010100.11001000.11000111.11111010.

  2. Определили адрес подсети путем логического умножения маски подсети на IP адрес, получили: 10010100.11001000.11000111.111100002 или 148.200.199.24010.

  3. Префикс сети - это количество единиц в двоичном коде маски подсети, в данном случае префикс сети равен 28.

  4. Для нахождения широковещательного адреса применим побитовое сложение IP адреса и инверсированной маски подсети, получим: 10010100.11001000.11000111.111101012 или 148.200.199.24510.

  5. Максимальный и минимальный адрес хостов получается путем прибавления единицы к адресу подсети и вычитании единицы из широковещательного адреса, получили: 148.200.199.241 и 148.200.199.244соответственно.

  6. Число хостов получается из разности максимального и минимального адреса хостов и равен: 3.

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