В терминологии сетей TCP/IP маской сети называется 32-разрядная двоичная Последовательность, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места нули.Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Обычно маска записывается по тем же правилам, что и IP-адрес – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа.Пример. Пусть IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0. Тогда адрес сети равен 231.32.240.0. Для узла с IP-адресом 227.138.127.144 адрес сети равен 227.138.64.0. Чему равен третий слева байт маски? ответ запишите в виде десятичного числа.
Пояснение.12710 = 01111111206410 = 010000002Заметим, что в маске во втором бите слева должна стоять единица, а в третьем бите слева — ноль. И так как мы знаем про маски, что в них сначала идут единицы, а потом нули, то получаем, что третий слева байт равен 110000002 = 19210 Правильный ответ: 192
Современные версии программного обеспечения (и в том числе, для языка Паскаль) позволяют в короткие сроки создавать очень короткие, наглядные и эффективные решения.
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016 begin var a:=ArrRandom(20,-99,99); a.Println; a.Where(x->x<0).Concat(a.Where(x->x>=0)).Println end.
Замечание: Если стоит задача получить именно массив, а потом его вывести, можно написать так: // PascalABC.NET 3.1, сборка 1250 от 28.05.2016 begin var a:=ArrRandom(20,-99,99); a.Println; a:=a.Where(x->x<0).Concat(a.Where(x->x>=0)).ToArray; a.Println end.
Пояснение.12710 = 01111111206410 = 010000002Заметим, что в маске во втором бите слева должна стоять единица, а в третьем бите слева — ноль. И так как мы знаем про маски, что в них сначала идут единицы, а потом нули, то получаем, что третий слева байт равен 110000002 = 19210
Правильный ответ: 192
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
begin
var a:=ArrRandom(20,-99,99); a.Println;
a.Where(x->x<0).Concat(a.Where(x->x>=0)).Println
end.
Тестовое решение
88 94 55 -38 43 -72 3 -26 -1 -23 84 93 40 -8 -25 77 4 39 -50 3
-38 -72 -26 -1 -23 -8 -25 -50 88 94 55 43 3 84 93 40 77 4 39 3
Замечание:
Если стоит задача получить именно массив, а потом его вывести, можно написать так:
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
begin
var a:=ArrRandom(20,-99,99); a.Println;
a:=a.Where(x->x<0).Concat(a.Where(x->x>=0)).ToArray;
a.Println
end.