Маска в двоичном представлении - это 32 бита, первые несколько бит равны 1, остальные 0. Адрес сети из адреса узла получается побитовым И, то есть IP адрес переводится в двоичную форму, и вычисляется побитовое И с соответствующим битом маски.
Переводим IP узла и адрес сети в двоичную форму (можно сообразить, что достаточно перевести только второй справа байт)
159.152.66.19 = ... . ... . 01000010 . ...
159.152.64.0 = ... . ... . 01000000 . ...
Побитовое И работает так: 1 И 1 = 1, все остальные комбинации 0.
01 в начале должно сохраниться, поэтому второй страва байт маски начинается на 11.
10 в конце должно превратиться в 00, поэтому второй справа байт маски оканчивается на 00.
На оставшихся местах 0 превратился в 0, так что в маске может быть как 0, так и 1.
5
Объяснение:
Маска в двоичном представлении - это 32 бита, первые несколько бит равны 1, остальные 0. Адрес сети из адреса узла получается побитовым И, то есть IP адрес переводится в двоичную форму, и вычисляется побитовое И с соответствующим битом маски.
Переводим IP узла и адрес сети в двоичную форму (можно сообразить, что достаточно перевести только второй справа байт)
159.152.66.19 = ... . ... . 01000010 . ...
159.152.64.0 = ... . ... . 01000000 . ...
Побитовое И работает так: 1 И 1 = 1, все остальные комбинации 0.
01 в начале должно сохраниться, поэтому второй страва байт маски начинается на 11.
10 в конце должно превратиться в 00, поэтому второй справа байт маски оканчивается на 00.
На оставшихся местах 0 превратился в 0, так что в маске может быть как 0, так и 1.
Вот все возможные варианты маски:
(16 единиц) 11000000 (8 нулей)
(16 единиц) 11100000 (8 нулей)
(16 единиц) 11110000 (8 нулей)
(16 единиц) 11111000 (8 нулей)
(16 единиц) 11111100 (8 нулей)
#include <iostream>
#include <vector>
using namespace std;
int main()
{
float summa, count = 0;
vector<int> result, zero;
for (int i = 21; i < 200; i++)
{
if (i % 3 == 0)
{
result.push_back(i);
count++;
summa += i;
if (i % 10 == 0)
{
zero.push_back(i);
}
}
}
cout << R"(Числа которые заканчиваютса нулем )" << endl;
for (int i = 0; i < zero.size(); i++)
{
cout << zero[i] << ' ';
}
cout << endl;
cout << R"(Числа которые кратные 3)" << endl;
for (int i = 0; i < result.size(); i++)
{
cout << result[i] << ' ';
}
cout << endl;
cout << R"(Количество таких чисел = )" << count << endl;
Дальше немного сами подумайте если я это написал и вы это не поняли. Советую учить С++. Потому что вы не будете понимать что вы делаете.