ip-адрес это 32 бита (4 байта). маска подсети - тоже 32 бита (4 байта).
ip-адрес можно условно разделить на две части (старшие биты - адрес сети, младшие биты - адрес устройства внутри этой сети). Граница (сколько бит адрес сети, а сколько бит адрес устройства) определяется числом после косой черты. В пунктах 1) и 2) это число 14, то есть под адрес сети отводится 14 бит (значит под адрес устройства: 32-14=18 бит). Чтобы сформировать маску подсети надо записать 32 бита таких чтобы старшие биты (адрес сети) были равны 1, а младшие биты (адрес устройства) были равны 0. Сделаем для случая из п.2 (то есть 14): буду писать группами по 8 бит, чтобы удобней было переводить потом биты в байты.
11111111 11111100 00000000 00000000
Для Python:
def UnitsConversion():
n = int(input("Введите число для конвертации: "))
rule = str(input("Нажмите 1, чтобы конвертировать в килобайты и 2, \
чтобы конвертировать в гигабайты: "))
if rule == "1":
m = n*1024
print(m)
else:
m = n/1024
print(m)
Объяснение:
1)Объявляем функцию UnitsConversion (можно назвать как угодно, без параметров в данном случае);
2)Ждем ввода пользователя при input() и сразу же конвертируем ввод в число при int(), чтобы Питон мог совершать над ним мат. операции;
3)Спрашиваем, что нужно сделать: перемножить или поделить. В качестве ответа ждем строку, состоящую из "1" или "2", конвертируется ввод в строку при str(). Если не использовать str(), то по умолчанию input() всегда будет строкой, но чтобы не путаться в данном примере, я использовал str().
4)Проверяем условия: если ввод был 1, то m будет произведение чисел, если не 1, то деление чисел, и также вывод ответа с print().