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