n = int(input('n='))
k = 0
while (n > 1):
n = n >> 1
k = k + 1
print(k)
n = int(input('n='))
k = 0
while (n > 1):
if ( n & 1 == 1):
raise Exception("The number entered is not a power of 2")
n = n >> 1
k = k + 1
print(k)
def find_exponent_of_two():
print("Добро пожаловать в программу поиска степени числа 2!")
print("Введите целое число N (> 0), являющееся степенью числа 2.")
print("Для выхода из программы введите 'q'.\n")
while True:
user_input = input("Ваш ввод: ").strip()
if user_input.lower() == 'q':
print("Выход из программы. До свидания!\n")
break
try:
N = int(user_input)
if N <= 0:
print("⚠️ Ошибка: Число N должно быть больше 0. Попробуйте еще раз.\n")
continue
if (N & (N - 1)) != 0:
lower_power = 1
while lower_power < N:
lower_power *= 2
higher_power = lower_power
lower_power //= 2
if (N - lower_power) <= (higher_power - N):
closest_power = lower_power
else:
closest_power = higher_power
print(f"⚠️ Ошибка: Число N должно быть степенью числа 2. Ближайшее правильное значение: {closest_power}.\n")
continue
K = 0
while N > 1:
N //= 2
K += 1
print(f"✅ Показатель степени K: {K}\n")
while True:
continue_input = input("Хотите продолжить? (да/нет): ").strip().lower()
if continue_input == 'да':
print("\nПожалуйста, введите следующее число N.\n")
break
elif continue_input == 'нет':
print("До свидания!\n")
return
else:
print("⚠️ Ошибка: Введите 'да' или 'нет'. Попробуйте еще раз.\n")
except ValueError:
print("⚠️ Ошибка: Введите корректное целое число. Попробуйте еще раз.\n")
except Exception as e:
print(f"⚠️ Произошла непредвиденная ошибка: {e}. Попробуйте еще раз.\n")
find_exponent_of_two()