найти колличество адресов очень просто
берешь 256.256.256.256 и вычитаешь отсуда значение маски, а затем перемножаешь числа
256.256.256.256 - 255.255.252.0 = 1.1.4.256 = 1 * 1 * 4 * 256 = 1024 (из них 1 броадкаст и 1 идентификатор сети, т.е. 0)
в описании диапазона эта маска имеет 1024 IP, а в описании подсети - всего 1022 максимально возможных IP-адреса внутри подсети (хотя подсеть из 1024 адресов, но 2 заняты под сетевые нужды)
или вот еще примеры, более простые:
256.256.256.256-255.255.255.252 = 4 (-2 = 2, максимально возможных)
например 256.256.256.256 - 255.255.255.128 = 128 (-2 = 126)
и еще... нужно учитывать чтобы маска в двоичном значении имела неприрывную матрицу
т.е. в ней не должны чередоваться 0 и 1, они должны идти по порядку - сначало 1 потом 0
255.255.255.255 = 8х4 единиц
в вашем примере 255 х 3 раза = это 8 х 3 единиц, все верно, однако число 40 имеет вид 101000 в котором после появления 0 появляется 1 (такого быть не может, поэтому маска неверная)
список верных значений в числах маски:
00000000 - 0
10000000 - 128
11000000 - 192
11100000 - 224
11110000 - 240
11111000 - 248
11111100 - 252
11111110 - 254
11111111 - 255
других значений быть не может!