Задания
Версия для печати и копирования в MS Word
Тип 13 № 72571
i

В тер­ми­но­ло­гии сетей TCP/IP мас­кой сети на­зы­ва­ет­ся дво­ич­ное число, опре­де­ля­ю­щее, какая часть IP-⁠ад­ре­са узла сети от­но­сит­ся к ад­ре­су сети, а какая  — к ад­ре­су са­мо­го узла в этой сети. При этом в маске сна­ча­ла (в стар­ших раз­ря­дах) стоят еди­ни­цы, а затем с не­ко­то­ро­го места  — нули. Адрес сети по­лу­ча­ет­ся в ре­зуль­та­те при­ме­не­ния по­раз­ряд­ной конъ­юнк­ции к за­дан­но­му IP-⁠ад­ре­су узла и маске.

На­при­мер, если IP-⁠адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.

Узел с IP-⁠ад­ре­сом 121.96.174.205 при­над­ле­жит сети, в ко­то­рой 10 IP-⁠ад­ре­сов, дво­ич­ная за­пись ко­то­рых со­дер­жит ровно 12 еди­ниц.

Сколь­ко еди­ниц со­дер­жит­ся в дво­ич­ной за­пи­си маски этой сети?

Спрятать решение

Ре­ше­ние.

Вы­пи­шем IP-адрес дво­ич­ной си­сте­ме счис­ле­ния:

121.96.174.20510  =  0111 1001.  0110 0000.  1010 1110.  1100 11012,

 

В пер­вых 3 бай­тах ад­ре­са со­дер­жит­ся 12 еди­ниц. За­ме­тим, 11 еди­ниц со­дер­жит­ся в пер­вых 22 битах дво­ич­ной за­пи­си IP. Для того, чтобы было 10 IP-ад­ре­сов с 12 еди­ни­ца­ми, долж­но оста­вать­ся 10 по­след­них битов. Сле­до­ва­тель­но, маска будет иметь:

  1111 1111.  1111 1111.  1111 1100.  0000 00002.

По­лу­ча­ем 22 еди­ни­цы со­дер­жит­ся в дво­ич­ной за­пи­си маски этой сети.

 

Ответ: 22.

 

При­ведём ре­ше­ние Ивана Но­ви­ко­ва на языке Python.

from ipaddress import *

for mask in range(15 , 33):

cnt = 0

net = ip_network(f'121.96.174.205/{mask}' , 0)

for ip in net:

if bin(int(ip)).count('1') == 12:

cnt += 1

if cnt == 10:

print(mask)


Аналоги к заданию № 72571: 72598 Все

Источник: Стат­Град: Тре­ни­ро­воч­ная ра­бо­та 24.10.2024 ИН2410101