Задание 5
Используя арифметические и побитовые операции, осуществите указанные действия, написав необходимую последовательность команд на одном из языков программирования. Привести два примера работы данной программы над разными числами со всеми выкладками в двоичной системе счисления.
Детали реализации:
Во всех таких задачах предполагается, что
а) все используемые числа являются однобайтовыми без знаковыми целыми (если не указано отдельно другое описание числа),
б) отсчет бит в байте начинается с единицы, начиная с младшего бита.
в) при описании маски используется следующая интерпретация:
символ «?» означает ровно один произвольный бит.
символ «*» означает любую последовательность бит.
а) проверить, присутствует ли в данном байте целиком битовая последовательность «111111»,
б) заменить в данном байте отдельные биты так, чтобы данный байт удовлетворял битовой маске «??10??10».
Задание а
Так как мы используем целое однобайтовое число без знака то битовой последовательности «111111» удовлетворяет только число 1510 или F16.
Следовательно, нам нужно сравнить какое-либо число с исходным числом. На языке программирования Pascal это будет выглядеть следующим образом:
Задание б
Для того чтобы проверить удовлетворяет данный байт данной битовой маске воспользовались логическим умножением проверяемого числа на число 100010 = 2216
Затем выполним сравнение данного числа и получим следующий результат:
Задание 6
Для заданного IP адреса и маски подсети рассчитать следующие параметры (см. дополнительную теоретическую часть):
а) адреса хостов в данной подсети (минимальный/максимальный IP),
б) адрес подсети,
в) число хостов,
г) широковещательный адрес (Broadcast),
д) префикс сети.
IP: 148.200.199.250, маска подсети: 255.255.255.240.
Выполнение:
Переведем IP адрес и маску подсети в двоичный формат, получим: маска подсети - 11111111.11111111.11111111.11110000; IP адрес – 10010100.11001000.11000111.11111010.
Определили адрес подсети путем логического умножения маски подсети на IP адрес, получили: 10010100.11001000.11000111.111100002 или 148.200.199.24010.
Префикс сети - это количество единиц в двоичном коде маски подсети, в данном случае префикс сети равен 28.
Для нахождения широковещательного адреса применим побитовое сложение IP адреса и инверсированной маски подсети, получим: 10010100.11001000.11000111.111101012 или 148.200.199.24510.
Максимальный и минимальный адрес хостов получается путем прибавления единицы к адресу подсети и вычитании единицы из широковещательного адреса, получили: 148.200.199.241 и 148.200.199.244соответственно.
Число хостов получается из разности максимального и минимального адреса хостов и равен: 3.
Заключение
Следуя цели данной лабораторной работы, были изучены различные числовые форматы целых и вещественных чисел, а также правила выполнения различных арифметических и логических операций над ними. Были закреплены теоритические и практические знания по применению побитовых операций над числами для проверки определенных свойств числа.