Давайте воспользуемся знаниями о таблицах данных для хранения ваших персональных данных. Это будут за все домашние задания за третий модуль. На Питоне! Заполните списки urok1, urok2, urok3 и urok4 вашими за домашние задания. Если дз не было или вы его не выполнили, то вместо напишите слово “нет”.
После этого составьте таблицу данных, каждая строка таблицы - за определенный урок.
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 устройства с разными адресами могут быть в каждой из получившихся подсетей
Microsoft QBasic m = 10 n = 15 DIM a(1 TO m, 1 TO n) AS INTEGER DIM x(1 TO n) AS INTEGER, y(1 TO m) AS INTEGER RANDOMIZE TIMER CLS PRINT "Исходная матрица" FOR i = 1 TO m FOR j = 1 TO n a(i, j) = INT(99 * RND) PRINT USING "###"; a(i, j); NEXT j PRINT NEXT i INPUT "Строка для Х и столбец для Y (через запятую): ", p, q PRINT "Вектор-строка Х" FOR j = 1 TO n x(j) = a(p, j) PRINT USING "###"; x(j); NEXT j PRINT PRINT "Вектор-столбец Y" FOR i = 1 TO m y(i) = a(i, q) PRINT USING "###"; y(i); NEXT i PRINT
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 устройства с разными адресами могут быть в каждой из получившихся подсетей
Объяснение:
m = 10
n = 15
DIM a(1 TO m, 1 TO n) AS INTEGER
DIM x(1 TO n) AS INTEGER, y(1 TO m) AS INTEGER
RANDOMIZE TIMER
CLS
PRINT "Исходная матрица"
FOR i = 1 TO m
FOR j = 1 TO n
a(i, j) = INT(99 * RND)
PRINT USING "###"; a(i, j);
NEXT j
PRINT
NEXT i
INPUT "Строка для Х и столбец для Y (через запятую): ", p, q
PRINT "Вектор-строка Х"
FOR j = 1 TO n
x(j) = a(p, j)
PRINT USING "###"; x(j);
NEXT j
PRINT
PRINT "Вектор-столбец Y"
FOR i = 1 TO m
y(i) = a(i, q)
PRINT USING "###"; y(i);
NEXT i
PRINT
Тестовое решение:
Исходная матрица
51 91 87 95 48 54 64 92 2 91 84 56 60 87 6
96 55 81 11 46 42 38 14 40 73 33 97 16 90 65
65 41 52 1 30 62 68 32 16 86 80 72 94 76 50
63 44 84 83 19 29 95 75 88 9 13 78 45 72 51
98 98 93 70 19 36 16 21 38 87 59 26 48 11 52
77 24 11 91 68 49 72 25 39 54 31 55 57 92 55
79 19 37 67 40 72 91 76 13 75 47 48 12 64 44
87 24 62 73 58 65 2 90 21 63 79 67 92 68 27
57 42 82 21 94 1 19 1 12 1 84 27 86 42 89
54 12 78 75 33 87 34 78 38 50 40 11 19 6 2
Строка для Х и столбец для Y (через запятую): 4,8
Вектор-строка Х
63 44 84 83 19 29 95 75 88 9 13 78 45 72 51
Вектор-столбец Y
92 14 32 75 21 25 76 90 1 78