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

В тер­ми­но­ло­гии сетей TCP/⁠IP мас­кой под­се­ти на­зы­ва­ет­ся 32-⁠раз­ряд­ное дво­ич­ное число, опре­де­ля­ю­щее, какие имен­но раз­ря­ды IP-⁠ад­ре­са ком­пью­те­ра яв­ля­ют­ся об­щи­ми для всей под­се­ти,  — в этих раз­ря­дах маски стоит 1. Обыч­но маски за­пи­сы­ва­ют­ся в виде чет­вер­ки де­ся­тич­ных чисел  — по тем же пра­ви­лам, что и IP-⁠ад­ре­са. Для не­ко­то­рой под­се­ти ис­поль­зу­ет­ся маска 255.255.254.0. Сколь­ко раз­лич­ных ад­ре­сов ком­пью­те­ров тео­ре­ти­че­ски до­пус­ка­ет эта маска, если два ад­ре­са (адрес сети и ши­ро­ко­ве­ща­тель­ный) не ис­поль­зу­ют?

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

Ре­ше­ние.

1.  По­сколь­ку пер­вые два ок­те­та (октет  — число маски, со­дер­жит 8 бит) оба равны 255, то в дво­ич­ном виде они за­пи­сы­ва­ют­ся как 16 еди­ниц, а зна­чит, пер­вые два ок­те­та опре­де­ля­ют адрес сети.

2.  За­пи­шем число 254 в дво­ич­ном виде: 254=11111110_2.

В конце этого числа стоит 1 ноль, еще 8 нолей мы по­лу­ча­ем из по­след­не­го ок­те­та маски. Итого у нас есть 9 дво­ич­ных раз­ря­дов для того, чтобы за­пи­сать адрес ком­пью­те­ра.

3.  2 в сте­пе­ни 9 =512, но, так как два ад­ре­са не ис­поль­зу­ют­ся, по­лу­ча­ем 512 минус 2=510.

 

Ответ: 510.

 

При­ведём ре­ше­ние Да­ни­ла Шар­ло­ва на языке Python.

from ipaddress import ip_network

from random import randint

ip = f'{randint(0,255)}.{randint(0,255)}.{randint(0,255)}.{randint(0,255)}'

mask = '255.255.254.0'

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

print(net.num_addresses-2)

 

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

print(2 ** (bin(255)[2:]+bin(255)[2:]+bin(254)[2:]+('0' * (8- len(bin(0)[2:]))+bin(0)[2:])).count('0') - 2)


Аналоги к заданию № 2236: 2237 3783 3785 Все