(А. Сражаев) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла маске сети. Сеть задана IP-адресом одного из входящих в неё узлов \(130.144.150.15\) и сетевой маской \(255.255.240.0.\) Определите количество IP-адресов в этой сети, которые могут быть присвоены компьютерам, при условии, что в шестнадцатеричной записи IP-адреса нет цифр с числовым значением, превышающим \(9.\)
Решение:
Python
ip = (130 << 24) + (144 << 16) + (150 << 8) + 15
mask = (255 << 24) + (255 << 16) + (240 << 8)
net = ip & mask
p = bin(mask)[2:].count('0')
q = 0
for x in range(1, 2**p - 1):
ip = net + x
h = hex(ip)[2:]
q += all(ch not in h for ch in 'abcdef')
print(q)
Ответ: \(999\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене