№13 — примеры решений

Один эталонный разбор.

В терминологии сетей ТСР/IР маской сети называют двоичное число, которое показывает, какая части IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы, Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом одного из входящих неё узлов 190.202.83.62 и сетевой маской 255.255.252.0 Найдите наибольший IP-адрес в данной сети, который может быть назначен компьютеру. В ответе укажите сумму числовых значений октетов найденного IP-адреса. Например, если бы найденный адрес был равен 100.20.3.4, то в ответе следовало бы записать: 127
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '190.202.83.62'
mask_ip = '255.255.252.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(sum(int(x) for x in result_ip.split('.')))
# Ответ: 729
Ответ:729
📚 Все задачи с разбором 25
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 172.16.96.0 и маской сети 255.255.224.0 Сколько в этой сети IP-адресов, для которых количество единиц в их двоичной записи кратно 2? В ответе укажите только число.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '172.16.96.0'
mask_ip = '255.255.224.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
net = node & mask
broadcast = net | (~mask & 0xFFFFFFFF)
count = sum(1 for ip in range(net, broadcast+1) if bin(ip).count('1') % 2 == 0)
print(count)
# Ответ: 4096
Ответ:4096
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 172.16.160.0 и маской сети 255.255.240.0.
Сколько в этой сети IP-адресов, для которых количество единиц в их двоичной записи кратно 2? В ответе укажите только число.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '172.16.160.0'
mask_ip = '255.255.240.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
net = node & mask
broadcast = net | (~mask & 0xFFFFFFFF)
count = sum(1 for ip in range(net, broadcast+1) if bin(ip).count('1') % 2 == 0)
print(count)
# Ответ: 2048
Ответ:2048
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом одного из входящих в неё узлов 191.128.66.83 и сетевой маской 255.192.0.0
Найдите в данной сети наибольший IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.23.44, то в ответе следовало бы записать:11122344.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '191.128.66.83'
mask_ip = '255.192.0.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(result_ip.replace('.', ''))
# Ответ: 191191255254
Ответ:191191255254
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом 172.16.192.0 и маской сети 255.255.192.0. Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5?
В ответе укажите только число.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '172.16.192.0'
mask_ip = '255.255.192.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
net = node & mask
broadcast = net | (~mask & 0xFFFFFFFF)
count = sum(1 for ip in range(net, broadcast+1) if bin(ip).count('1') % 5 != 0)
print(count)
# Ответ: 13003
Ответ:13003
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом 172.16.80.0 и маской сети 255.255.248.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 2? В ответе укажите только число.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '172.16.80.0'
mask_ip = '255.255.248.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
net = node & mask
broadcast = net | (~mask & 0xFFFFFFFF)
count = sum(1 for ip in range(net, broadcast+1) if bin(ip).count('1') % 2 != 0)
print(count)
# Ответ: 1024
Ответ:1024
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом одного из входящих в неё узлов 143.168.72.213 и сетевой маской 255.255.255.240.
Определите наибольший IP-адрес данной сети, который может быть присвоен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать 11122344.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '143.168.72.213'
mask_ip = '255.255.255.240'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(result_ip.replace('.', ''))
# Ответ: 14316872222
Ответ:14316872222
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом одного из входящих в неё узлов 11.92.135.56 и сетевой маской 255.224.0.0.
Найдите в данной сети наибольший IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '11.92.135.56'
mask_ip = '255.224.0.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(result_ip.replace('.', ''))
# Ответ: 1195255254
Ответ:1195255254
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом одного из входящих в неё узлов 98.81.154.195 и сетевой маской 255.252.0.0.
Найдите наибольший в данной сети IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать 11122344.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '98.81.154.195'
mask_ip = '255.252.0.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(result_ip.replace('.', ''))
# Ответ: 9883255254
Ответ:9883255254
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом одного из входящих в неё узлов 45.172.106.203 и сетевой маской 255.255.252.0.
Найдите наибольший в данной сети IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать 11122344.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '45.172.106.203'
mask_ip = '255.255.252.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(result_ip.replace('.', ''))
# Ответ: 45172107254
Ответ:45172107254
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом одного из входящих в неё узлов 205.99.68.249 и сетевой маской 255.255.248.0. Найдите наибольший в данной сети IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать 11122344.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '205.99.68.249'
mask_ip = '255.255.248.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(result_ip.replace('.', ''))
# Ответ: 2059971254
Ответ:2059971254
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом одного из входящих в неё узлов 73.148.145.65 и сетевой маской 255.224.0.0.
Найдите наибольший в данной сети IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать 11122344.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '73.148.145.65'
mask_ip = '255.224.0.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(result_ip.replace('.', ''))
# Ответ: 73159255254
Ответ:73159255254
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Сеть задана IP-адресом одного из входящих в неё узлов 158.214.121.40 и сетевой маской 255.255.255.224. Найдите максимальный IP-адрес в данной сети, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать 11122344.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '158.214.121.40'
mask_ip = '255.255.255.224'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(result_ip.replace('.', ''))
# Ответ: 15821412162
Ответ:15821412162
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Сеть задана IP-адресом одного из входящих в неё узлов 102.162.200.51 и сетевой маской 255.255.255.0.
Найдите в данной сети наибольший IP-адрес, который может быть назначен компьютеру. В ответе укажите сумму числовых значений октетов найденного IP-адреса.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '102.162.200.51'
mask_ip = '255.255.255.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(sum(int(x) for x in result_ip.split('.')))
# Ответ: 718
Ответ:718
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 172.16.168.0 и маской сети 255.255.248.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5? В ответе укажите только число.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '172.16.168.0'
mask_ip = '255.255.248.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
net = node & mask
broadcast = net | (~mask & 0xFFFFFFFF)
count = sum(1 for ip in range(net, broadcast+1) if bin(ip).count('1') % 5 != 0)
print(count)
# Ответ: 1663
Ответ:1663
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательный адрес называют специальным адресом, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. В сети задан IP-адрес одного из входящих в неё узлов 218.194.82.148 с сетевой маской 255.255.225.225.192.
Найдите наибольший IP-адрес в данной сети, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, для адреса 111.22.3.44, то в ответе следовало бы записать 11122344.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '218.194.82.148'
mask_ip = '255.255.225.225'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(result_ip.replace('.', ''))
# Ответ: 21819482190
Ответ:21819494157
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом 172.16.192.0 и маской сети 255.255.192.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5? В ответе укажите только число.
from ipaddress import *
k = 0
net = ip_network('172.16.192.0/255.255.192.0', 0)
for ip in net:
    if bin(int(ip))[2:].count('1') % 5 != 0:
        k += 1
print(k)
Ответ:13003
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Сеть задана IP-адресом одного из входящих в нее узлов 158.214.121.40 и сетевой маской 255.255.255.224.
Найдите наименьший IP-адрес в данной сети, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать 11122344.
from ipaddress import *
net = ip_network('158.214.121.40/255.255.255.224', 0)
first_host = next(net.hosts())
print(str(first_host).replace('.', ''))
Ответ:15821412133
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 5.2.5.0 и маской сети 255.255.0.0.
Сколько в этой сети IP-адресов, для которых количество нулей в двоичной записи IP-адреса кратно 25? В ответе укажите только число.
from ipaddress import *
k = 0
net = ip_network('5.2.5.0/255.255.0.0', 0)
for ip in net:
    if f'{ip:b}'.count('0') % 25 == 0:
        k += 1
print(k)
Ответ:1820
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 192.168.248.176 и маской сети 255.255.255.240.
Сколько в этой сети IP-адресов, для которых количество единиц и нулей в двоичной записи IP-адреса одинаково? В ответе укажите только число.
from ipaddress import *
k = 0
net = ip_network('192.168.248.176/255.255.255.240', 0)
for ip in net:
    if f'{ip:b}'.count('1') == f'{ip:b}'.count('0'):
        k += 1
print(k)
Ответ:4
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом одного из узлов 172.140.68.0 и маской сети 255.255.248.0.
Сколько в этой сети IP-адресов, в которых количество нулей в двоичной записи IP-адреса больше 15? В ответе укажите только число.
from ipaddress import *
k = 0
net = ip_network('172.140.68.0/255.255.248.0', 0)
for ip in net:
    if f'{ip:b}'.count('0') > 15:
        k += 1
print(k)
Ответ:1981
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 172.16.168.0 и маской сети 255.255.248.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5? В ответе укажите только число.
from ipaddress import *
k = 0
net = ip_network('172.16.168.0/255.255.248.0', 0)
for ip in net:
    if f'{ip:b}'.count('1') % 5 != 0:
        k += 1
print(k)
Ответ:1663
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом одного из входящих в неё узлов 146.180.173.153 и сетевой маской 255.192.0.0. Определите наибольший IP-адрес данной сети, который может быть присвоен компьютеру. В ответе укажите сумму числовых значений октетов найденного IP-адреса. Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать 180.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '146.180.173.153'
mask_ip = '255.192.0.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
network = node & mask
broadcast = network | (~mask & 0xFFFFFFFF)
max_host = broadcast - 1
result_ip = int_to_ip(max_host)
print(sum(int(x) for x in result_ip.split('.')))
# Ответ: 846
Ответ:846
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств. Сеть задана IP-адресом 134.80.0.0 и сетевой маской 255.240.0.0. Определите наибольшую сумму числовых значений октетов IP-адреса устройства (компьютера) из этой сети, у которого количество единиц и количество нулей в двоичной записи одинаково. В ответе укажите только число.
def ip_to_int(ip):
    p = ip.split('.')
    return (int(p[0])<<24)|(int(p[1])<<16)|(int(p[2])<<8)|int(p[3])
def int_to_ip(n):
    return '.'.join([str((n>>24)&0xFF),str((n>>16)&0xFF),str((n>>8)&0xFF),str(n&0xFF)])
node_ip = '134.80.0.0'
mask_ip = '255.240.0.0'
node = ip_to_int(node_ip)
mask = ip_to_int(mask_ip)
net = node & mask
broadcast = net | (~mask & 0xFFFFFFFF)
count = sum(1 for ip in range(net, broadcast+1) if bin(ip).count('1') % 2 == 0)
print(count)
# Ответ: 718
Ответ:718
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса относится к адресу сети, а какая — к адресу узла. Адрес сети получается поразрядной конъюнкцией адреса узла и маски. Дан узел с IP-адресом 172.25.148.73 и маской /19 (первые 19 бит маски равны 1, остальные 13 — нулю). В двоичной системе счисления октеты адреса записываются так: 172 = 10101100₂, 25 = 00011001₂, 148 = 10010100₂, 73 = 01001001₂ Полная 32-разрядная двоичная запись адреса: 10101100 00011001 10010100 01001001 Определите количество IP-адресов данной сети, для которых одновременно выполняются все три условия: — в 32-разрядной двоичной записи адреса ровно 16 единиц и 16 нулей; — двоичная запись адреса начинается с 1; — двоичная запись адреса не оканчивается на 1. В ответе запишите только целое число.
Шаг 1. Определяем сеть.
Маска /19 = 255.255.224.0. Третий октет маски: 224 = 11100000₂.
Третий октет IP: 148 = 10010100₂. AND: 10010100 AND 11100000 = 10000000 = 128.
Сеть: 172.25.128.0/19. Диапазон адресов: 172.25.128.0 — 172.25.159.255.

Шаблон 32-разрядной записи всех адресов сети:
10101100 00011001 100ABCDE FGHIJKLM
где A–E — 5 свободных бит третьего октета, F–M — 8 бит четвёртого октета (всего 13 свободных бит).

Шаг 2. Единицы в фиксированном префиксе (первые 19 бит):
172 = 10101100₂ → 4 единицы
25 = 00011001₂ → 3 единицы
Старшие 3 бита третьего октета: 100 → 1 единица
Итого в префиксе: 4 + 3 + 1 = 8 единиц.

Шаг 3. Условие «начинается с 1».
172 = 10101100₂ — первый бит всегда 1 для всех адресов этой сети. Условие выполнено для всех 2¹³ = 8192 адресов, фильтрации нет.

Шаг 4. Условие «ровно 16 единиц».
В 13 свободных битах нужно ровно 16 − 8 = 8 единиц.
C(13, 8) = 1287 вариантов.

Шаг 5. Условие «не оканчивается на 1».
Последний (32-й) бит адреса — младший бит четвёртого октета, он должен быть равен 0.
Из 12 оставшихся свободных бит нужно разместить 8 единиц.
C(12, 8) = 495.

Проверка на Python:
count = 0
for a3 in range(128, 160):
    for a4 in range(256):
        b = f'{172:08b}{25:08b}{a3:08b}{a4:08b}'
        if b.count('1') == 16 and b[0] == '1' and b[-1] != '1':
            count += 1
print(count)  # 495

Ответ: 495.
Ответ:495
Сколько IP-адресов в диапазоне от 192.168.4.0 до 192.168.7.255 включительно имеют ровно 14 единиц в 32-битной двоичной записи?
В ответе запишите только целое число.
192 = 11000000₂ (2 единицы); 168 = 10101000₂ (3 единицы).
В первых двух октетах: 5 единиц. Нужно ещё 9 единиц в третьем и четвёртом октетах.
Третий октет c₃ ∈ {4,5,6,7}; четвёртый d ∈ [0,255]:
from math import comb
total = 0
for c3 in range(4, 8):
    ones_c3 = bin(c3).count('1')    # 4→1, 5→2, 6→2, 7→3
    needed_d = 9 - ones_c3          # нужных единиц в d
    if 0 <= needed_d <= 8:
        total += comb(8, needed_d)
# c3=4: C(8,8)=1; c3=5: C(8,7)=8; c3=6: C(8,7)=8; c3=7: C(8,6)=28
print(total)  # 45
Ответ:45