ip-адрес это 32 бита (4 байта). маска подсети - тоже 32 бита (4 байта).
ip-адрес можно условно разделить на две части (старшие биты - адрес сети, младшие биты - адрес устройства внутри этой сети). Граница (сколько бит адрес сети, а сколько бит адрес устройства) определяется числом после косой черты. В пунктах 1) и 2) это число 14, то есть под адрес сети отводится 14 бит (значит под адрес устройства: 32-14=18 бит). Чтобы сформировать маску подсети надо записать 32 бита таких чтобы старшие биты (адрес сети) были равны 1, а младшие биты (адрес устройства) были равны 0. Сделаем для случая из п.2 (то есть 14): буду писать группами по 8 бит, чтобы удобней было переводить потом биты в байты.
11111111 11111100 00000000 00000000
если теперь каждый из этих байтов записать в десятичной системе счисления и разделить точками, то получим классическую запись маски подсети (и заодно решение п.2):
255.252.0.0
Теперь насчет емкости (п.1). С такой маской подсети под адрес устройства в этой сети отводится 32-14=18 бит. Значит всего может быть адресов:
Осталось только вспомнить, что адрес где все биты равны нулям используе�ся для обозначения всей подсети, а адрес где все биты равны единицам используется в качестве широковещательного адреса на подсеть. То есть эти два адреса не могут принадлежать ни одному устройству в этой подсети. Получается что всего устройств в подсети (емкость) равна 262144-2=262142. Это ответ на п.1.
С п.3 я не уверен, что правильно понимаю в чём именно во Но насколько понял:
в указанной в задании сети под адрес сети выделено 13 бит, значит под адреса устройств/подсетей 32-13=19 бит.
Маска подсети определяется это количеством бит (причем всегда целым - поэтому разбиение может идти только по целым степеням двойки). Чтобы разбить на 400 подсетей надо под адрес подсети выделить x бит, так чтобы:
нам подходят 9 бит (512 > 400), 10 бит (1024 > 400), 11 бит (2048 > 400) и т. д. В условии есть фраза про максимальную экономию адресного Скорее всего имелось ввиду, чтоб адрес подсети был минимальным. Минимальное из подходящих - это 9 бит.
Итого: в изначальном адресном в условии) адрес сети занимал 13 бит. Адрес подсети (после разбиения на 400 подсетей) "заберёт" ещё 9. Под адреса устройств в каждой подсети остается 32-(13+9)= 10 бит. То есть количество адресов в каждой подсети будет:
Минус два служебных адреса (как и в п.1). Итого 1022 устройства с разными адресами могут быть в каждой из получившихся подсетей
Объяснение:
var a,b:integer; - говорит программе, что будут использовать целые числа в переменных
А и В
begin - начало программы
a:=0; - а = 0
b:=2364; - b = 2364;
while b>0 do begin - Пока b > 0 делать
f b mod 10<5 then - Если b разделить на 10 в остатке получится число меньше 5 тогда
a:=a+b mod 10; - а = а + b разделить на 10 и найти остаток (этот остаток и прибавить
b:=b div 10; - b = b разделить на 10 и найти целую часть, на эту целую часть
заменить старое значение переменной b
end; - конец цикла
writeln(a); - напечатать А
end. - конец программы
Работает так:
1) a = 0
b = 2364
2364 > 0 да
2364 / 10 = 236 ост 4
4<5 да тогда а = 0 + 4 = 4
b = 2364 / 10 = 236 - находим только целую часть числа
2) проверяем снова условие
236 > 0 да
236 / 10 = 23 ост 6
6 < 5 нет - ничего не делаем ( а осталось равно 4)
b = 236 / 10 = 23 - находим только целую часть числа
3) проверяем снова условие
23 > 0 да
23 / 10 = 2 ост 3
3<5 да тогда а = 4 + 3 = 7
b = 23 / 10 = 2 - находим только целую часть числа
4) проверяем снова условие
2 > 0 да
2/10 = 0 ост 2
2<5 да, тогда а = 7 + 2 = 9
b = 2 / 10 = 0 - находим только целую часть числа
5) проверяем снова условие
0 > 0 нет
закончили цикл
Напечатать а = 9
конец алгоритма
Алгоритм считает сумму цифр в числе В, которые меньше 5