public static void Main()
Console.Write("Enter a number: Range number : Min value = 0, Max value = ");
Console.WriteLine(uint.MaxValue + " : \n");
string line = Console.ReadLine();
bool result = uint.TryParse(line, out number);
Console.WriteLine("\nThis is not a valid input for uint number!\n\n");
Console.WriteLine("\nEnter a value for position [p]: Range p : Min value p = 0, Max value p = 31 ! \n");
line = Console.ReadLine();
result = int.TryParse(line, out p);
if (result == false || p < 0 || p > 31)
Console.WriteLine(result == false ? "\nThis is not a valid input for p!\n\n"
Console.WriteLine("\nEnter a value for position [q]: Range q : Min value q = 0, Max value q = 31 ! \n");
line = Console.ReadLine();
result = int.TryParse(line, out q);
if (result == false || q < 0 || q > 31)
Console.WriteLine(result == false ? "\nThis is not a valid input for q!\n\n"
Console.WriteLine("\nEnter a value for [k]! Range k : Min value k = 0, Max value k = " + MaxValueOfK + " !\n");
line = Console.ReadLine();
result = int.TryParse(line, out k);
if (result == false || p + k > 32 || q + k > 32)
Console.WriteLine(result == false ? "\nThis is not a valid input for k!\n\n"
bool overlap = (p < q && p + k >= q) || (q < p && q + k >= p);
Console.WriteLine("\nOverlapping !\n\n");
for (int i = 0; i <= k - 1; i++)
bitPValue = (int)(number & maskP) >> p;
bitQValue = (int)(number & maskQ) >> q;
Console.WriteLine("\nResult : \n\n" + number + " \n\n\n");