Задачи с сайта СДАМ ГИА: РЕШУ ЕГЭ

№ 7669

скрин


Для некого понимания задачи стоит сказать, что есть хороший пример, правда он немного не настоящий), но под задачи подходит.

Допустим, что у вас дома стоит wi-fi роутер и у него IP-адрес 192.168.0.1 (не взламывайте соседей.. они давно логин и пароль админа меняют)

это будет адрес сети

У вас в семье много устройств, которые могут подключаться к сети интернет, и вы их, естественно, подключаете к своему wi-fi. 

Для каждого устройства назначается IP-адрес, например у вас 5 устройств:

192.168.0.10

192.168.0.11

192.168.0.12

192.168.0.13

192.168.0.14

это, так называемые узлы

надеюсь, будет проще понимать задачу


возникает вопрос, а как же назначаются эти адреса всем устройствам?

опять же, для упрощения будем говорить, что маска сети за это несет ответственность


Разберем пример из задачи:

IP-⁠адрес узла равен 231.32.255.131

маска равна 255.255.240.0

переводим в двоичную систему счисления десятичные значения байтов (при помощи python)

скрин

напоминаю про нули!!!!! слева добиваем до 8 цифр в байте (второй, третий и четвертый байт)

IP-⁠адрес узла равен 11100111.00100000.11111111.10000011

далее маска:

скрин

маска равна 11111111.11111111.11110000.00000000

выведу результаты отдельно друг под другом для удобства


IP-⁠адрес узла равен 11100111.00100000.11111111.10000011

маска равна               11111111.11111111.11110000.00000000


Если в маске стоят единицы, это означает, что значения битов не меняются

значит первые два байта IP-адреса остаются неизменными

последний байт будет равен 00000000, так как последний байт маски 00000000

анализируем третий байт

в маске первые четыре бита равны 1, значит первые четыре бита IP-адреса будут неизменяемыми

остальное меняется

значит адрес будет таким: 11100111.00100000.11110000.00000000

переводим в десятичную систему:

скрин

231.32.240.0


Чтобы не заниматься ерундой, и постоянно переводить из двоичной в десятичную и обратно, запомните одну важную вещь:

поразрядная конъюнкция (&) - амперсанд (на клавиатуре, где цифра 7)

она позволит нам, в большинстве случаев, просто находить результат побитовой конъюнкции чисел в десятичной системе и получать ответ

скрин


В нашей задаче вопрос звучит так:

Для узла с IP-⁠адресом 224.128.112.142 адрес сети равен 224.128.64.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.

Для решения этой задачи нужно понимать главную особенность:

мы теперь ищем маску, а значит все правила нам помогают

условно, можно представить искомый байт маски за X (некое неизвестное)


И спросите себя - на что нужно умножить (конъюнкция - это условное умножение) какое-то число, если получается это же число?

Правильно! На 255

Так как 255 - это 11111111

А по базовым правилам алгебры логики, что не умножай на 1 - все равно будет исходное

X ∗ 1 = X

В нашем случае X & 1 = X


Помня выше написанное, смело можем сказать, что 224 & X = 224, и, естественно, X = 255

128 & X = 128, и, естественно, X = 255


Первые два байта маски нашли: 255.255.X.X

со временем вы будете эти байты очень быстро отсекать из контекста задачи, и сразу приступать к поиску основного вопроса


Рассмотрим третьи байты адресов сети и узла:

112 и 64

скрин

Напоминаю про нули слева!!!! до 8 битов!

01110000

01000000

И тут самое главное в понимании задачи!


мы вспоминаем тот факт, что маска это запись формата (111...11000...00)

то есть сначала единицы, потом нули и никак иначе!

Постарайтесь осознать и запомнить!


01110000

01000000

анализируем отдельно каждые биты записи

0 & X = 0 , тут толком не понять вообще, так как X может быть и 0 и 1

а вот второй бит!

1 & X = 1

Тут 100%, что X = 1

Далее 1 & X = 0, это важнейший момент понимания границы, где маска переходит в нули

Здесь X - 100% равен 0

Из всего выше следует, что первый бит может быть любым. Второй бит точно 1. Третий бит точно 0.

Значит маска имеет вид 11000000

а это

скрин


Last modified: Saturday, 28 June 2025, 3:48 PM