Задача Задача №3614868
А
А
Задача: найти маску с наибольшим количеством единиц, при которой адреса 61.58.73.4 и 61.58.75.136 принадлежат одной сети, и для найденной маски посчитать количество узлов, у которых в IP‑адресе нечётное число единиц.
- Поиск самой длинной общей префиксной маски
- В двоичном виде получаем адреса:
- 61.58.73.4 = 00111101.00111010.01001001.00000100
- 61.58.75.136 = 00111101.00111010.01001011.10001000
- Первая и вторая четверти одинаковы (первые 16 бит совпадают).
- В третьей четверти у 73 и 75 первые 6 бит совпадают, но 7-й бит различается.
- Значит общая префиксная длина равна 22 бита. Искомая маска: /22 = 255.255.252.0.
- Адрес сети: 61.58.73.4 AND 255.255.252.0 = 61.58.72.0. (У адреса 61.58.75.136 та же сеть.)
Ответ по части маски: маска 255.255.252.0 (или /22).
- Число узлов в этой сети
- Длина маски /22 дает 2^(32−22) = 1024 адреса в сети.
- Сети: сетевой адрес 61.58.72.0 и широковещательный адрес 61.58.75.255 не могут быть назначены устройствам.
- Используемые адреса (usable hosts): 1024 − 2 = 1022 адреса.
- Подсчёт количества узлов с нечётным количеством единиц в IP‑адресе
- Подсчёт количества единиц в фиксированной сетевой части (первые 22 бита):
- Первый октет 61 → 5 единиц
- Второй октет 58 → 4 единицы
- В третьем октете первые 6 бит: 73 = 01001001, первые 6 бит = 010010 → две единицы
- Итого фиксированное число единиц в сети: 5 + 4 + 2 = 11
- Остаток адреса (host‑часть) состоит из 10 бит (2 бита в третьем октете + 8 бит в четвёртом октете).
- Общее число единиц в полном IP-адресе равно 11 + popcount(host_bits).
- Чтобы сумма была нечётной, popcount(host_bits) должна быть чётной (0, 2, 4, 6, 8, 10).
- Всего 10‑битных host‑значений: 2^10 = 1024 possibilities. Чётных паритетов у 10 бит ровно половина: 2^9 = 512.
- Однако адреса сетевого узла и широковещательный адрес не являются устройствами:
- host_bits = 0 → адрес сети (невозможно использовать)
- host_bits = 1023 → адрес вещания (невозможно использовать) Оба эти значения имеют чётный popcount(host_bits), поэтому нужно вычесть их из числа доступных чётных паритетов: 512 − 2 = 510.
- Следовательно, среди доступных 1022 адресов узлов сколько-то имеет нечётное число единиц в полном IP, тогда как ровно 510 таких узлов имеют чётное число единиц в host‑части, что даёт нечётное общее число единиц (так как 11 — нечётное).
Итого:
- Маска сети: 255.255.252.0 (или /22).
- Сетевой адрес: 61.58.72.0.
- Количество usable узлов в сети: 1022.
- Число узлов, у которых в IP‑адресе нечётное кол-во единиц: 510.