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

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

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

Для узла с IP-⁠ад­ре­сом 117.191.37.84 адрес сети равен 117.191.37.80. Чему равно наи­мень­шее воз­мож­ное зна­че­ние по­след­не­го (са­мо­го пра­во­го) байта маски? Ответ за­пи­ши­те в виде де­ся­тич­но­го числа.

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

Ре­ше­ние.

За­ме­тим, что пер­вые три байта IP-⁠ад­ре­са сов­па­да­ют с ад­ре­сом сети, сле­до­ва­тель­но, маска сети для этих трёх байт со­сто­ит толь­ко из еди­ниц. За­ме­тим также, что четвёртый байт IP-⁠ад­ре­са от­ли­чен от нуля, но при этом четвёртый байт ад­ре­са сети не равен четвёртому байту IP-⁠ад­ре­са.

Рас­смот­рим четвёртый байт IP-⁠ад­ре­са и ад­ре­са сети в дво­ич­ной си­сте­ме счис­ле­ния:

8410  =  0101 01002,

8010  =  0101 00002.

От­ку­да ясно, что че­ты­ре пер­вых слева бита маски  — еди­ни­цы, а пятый бит может быть как нулём, так и еди­ни­цей. Для того чтобы ко­ли­че­ство еди­ниц было наи­мень­шим, тре­тий бит дол­жен быть равен нулю. По­лу­ча­ем, что тре­тий слева байт маски равен 1111 0000.

Таким об­ра­зом, наи­мень­шее воз­мож­ное зна­че­ние по­след­не­го (са­мо­го пра­во­го) байта маски равно 1111 00002  =  24010.

 

При­ме­ча­ние. В маске после нуля идут толь­ко одни нули.

 

Ответ: 240.

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

mask = [int('1'*i+'0'*(8-i),2) for i in range(9)]

print(min(m for m in mask if 84&m==80))


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

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ—2019 по ин­фор­ма­ти­ке