В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и его маске. По заданным IP-адресу узла и маске определите адрес сети.
IP-адрес: 145.92.137.88
Маска: 255.255.240.0
При записи ответа выберите из приведенных в таблице чисел четыре элемента IP-адреса и запишите в нужном порядке соответствующие им буквы без точек.
| A | B | C | D | E | F | G | H |
| 0 | 145 | 255 | 137 | 128 | 240 | 88 | 92 |
Пример.
Пусть искомый адрес сети 192.168.128.0 и дана таблица:
| A | B | C | D | E | F | G | H |
| 128 | 168 | 255 | 8 | 127 | 0 | 17 | 192 |
В этом случае правильный ответ будет HBAF.
1. Запишем числа маски сети в двоичной системе счисления. Получим:
2. Адрес сети получается в результате поразрядной конъюнкции чисел маски и чисел адреса узла (в двоичном коде). Поскольку конъюнкция
3. Рассмотрим конъюнкцию
Результатом конъюнкции является число
4. Сопоставим варианты ответа получившимся числам: 145, 92, 128, 0.
Ответ: BHEA.
Приведём решение Дениса Кашутина (город Владимир) на языке Python.
dict1 = {0: 'А', 145: 'B', 255: 'C', 137 : 'D', 128 : 'E', 240 : 'F', 88 : 'G', 92 : 'H'}
mylist = [145 & 255, 92 & 255, 137 & 240, 88 & 0]
for i in mylist:
if i in dict1: # если элемент из списка встречается в словаре, то выводим элемент словаря
print(dict1[i])
Приведём решение Тимофея Софронова на языке Python.
from ipaddress import *
cnt = 0
net = ip_network('145.92.137.88/255.255.240.0', 0)
print(str(net)[:-3])

