Представим 155 в двоичном виде: 10011011 Представим 145 в двоичном виде: 10010001 Маска в IPv4 - последовательность из 32-х 1 и 0 такая, что сначала идет n единиц, затем 32-n нулей. Число единиц равно наибольшему количеству совпавших бит у адресов слева направо. Видим, что первые два блока полностью совпадают, так как их десятичные записи совпадают. Различия уже начинаются в третьем блоке. В разложении чисел видно, что совпадают лишь первые 4 бита, дальше уже идет первое несовпадение. поэтому маска для этих адресов выглядит так: 11111111.11111111.11110000.00000000 Переводим 11110000 в десятичный вид и получаем 240.
#include <conio.h>
using namespace std;
int main()
{
setlocale(LC_ALL,"Russian");
unsigned long long A,B;
cout << "Введите A(Начало) и B(Конец):\t";
cin >> A >> B;
if (A>0)
for (unsigned long long i=A; i<=B; i++)
cout << i << "\t - \t" << i*i << endl;
else
{
cout << "Ошибка!";
_getch();
return -1;
}
_getch();
return 0;
}
P.S. Это моя старая программа на C++, ПИСАЛ ЕЁ ДАВНО, использовал Microsoft Visual C++ 2010.
Представим 145 в двоичном виде: 10010001
Маска в IPv4 - последовательность из 32-х 1 и 0 такая, что сначала идет n единиц, затем 32-n нулей. Число единиц равно наибольшему количеству совпавших бит у адресов слева направо. Видим, что первые два блока полностью совпадают, так как их десятичные записи совпадают. Различия уже начинаются в третьем блоке. В разложении чисел видно, что совпадают лишь первые 4 бита, дальше уже идет первое несовпадение. поэтому маска для этих адресов выглядит так: 11111111.11111111.11110000.00000000
Переводим 11110000 в десятичный вид и получаем 240.