Если вы думаете задом наперед, это ваши делители на основе значения numbers
31 => 2
30 => 4
29 => 8
28 => 16
27 => 32
26 => 64
25 => 128
24 => 256
Другими словами, они равняются степени возрастающего числа.
31 => 2^1
30 => 2^2
29 => 2^3
28 => 2^4
27 => 2^5
26 => 2^6
25 => 2^7
24 => 2^8
Другими словами, два в степени 32 минус numbers
31 => 2^(32-31)
30 => 2^(32-30)
29 => 2^(32-29)
28 => 2^(32-28)
27 => 2^(32-27)
26 => 2^(32-26)
25 => 2^(32-25)
24 => 2^(32-24)
Другими словами,
var divisor = Math.Pow(2, 32-numbers);
var subnet = 256 - divisor;
До 4 строк без switch
или if
. Ура!
Console.WriteLine("correct netID is: 192.168." + randomip + "." + secondip / divisor);
Console.WriteLine("correct subnet is: 255.255.255." + subnet);