Сеть задана IP-адресом одного из входящих в неё узлов 146.180.173.153 и сетевой маской 255.192.0.0.
Найдите наибольший в данной сети IP-адрес, который может быть назначен компьютеру.
В ответе укажите найденный IP-адрес без разделителей.
Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать: 11122344.
В терминологии сетей ТСР/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы.
Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом одного из входящих в неё узлов 146.180.173.153 и сетевой маской 255.192.0.0.
Найдите наибольший в данной сети IP-адрес, который может быть назначен компьютеру.
В ответе укажите найденный IP-адрес без разделителей.
Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать: 11122344.
# способ 1
from ipaddress import *
# создаём сеть:
# IP-адрес: 146.180.173.153
# маска: 255.192.0.0
net = ip_network('146.180.173.153/255.192.0.0', 0)
# net[-1] — broadcast адрес
# net[-2] — последний адрес перед broadcast
last_ip = net[-2]
# переводим IP в строку и убираем точки
print(str(last_ip).replace('.', ''))
📌 Результат: сеть 146.128.0.0/10; широковещательный адрес — 146.191.255.255; наибольший адрес компьютера — 146.191.255.254; в ответе без точек: 146191255254.
# функция переводит числа в двоичный вид по 8 бит
def to_bin(*numbers):
return [f'{x:08b}' for x in numbers]
# маска сети
mask = to_bin(255, 192, 0, 0)
# IP-адрес
ip = to_bin(146, 180, 173, 153)
print(*mask)
print(*ip)
# маска:
# 11111111 11000000 00000000 00000000
# IP:
# 10010010 10110100 10101101 10011001
# в маске:
# первые 10 бит — сеть
# остальные биты можно сделать максимальными,
# чтобы получить последний адрес сети
# получаем:
# 10010010 10111111 11111111 11111110
# перевод в десятичную систему:
# 146 191 255 254
📌 Результат: по маске видно, какие биты фиксированы; в хостовой части ставим единицы, кроме последнего хоста перед broadcast — получаем 146.191.255.254.
Поверните телефон
Горизонтальный режим удобнее для таблицы и Python-кода