В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции и заданному адресу узла и маске сети.
Сеть задана IP-адресом 249.0.33.87 и маской сети 255.252.0.0. Сколько в этой сети IP-адресом, для которых в двоичной записи IP-адреса суммарное количество единиц в правых двух байтах более чем вдвое превосходит суммарное количество единиц в левых двух байтах?
В ответе укажите только число.
Решение:
Решение на Python:
from ipaddress import *
k = 0 #создаем счетчик
for ip in ip_network('249.0.33.87/255.252.0.0',0):
#создаем двоичную запись адреса:
ip2 = f'{ip:b}'
#разделим наш двоичный адрес с помощью среза и выполним проверку:
if ip2[16:].count('1') / ip2[:16].count('1') > 2: k+=1
print(k)
Ответ: 731
Ответ:
731