Напишите программу, которая преобразует целое число (возможно, отрицательное) из бинарной системы счисления

  • 31
Напишите программу, которая преобразует целое число (возможно, отрицательное) из бинарной системы счисления в восьмеричную. Перед отрицательными числами ставится знак "-". Конвертация числа в десятичную систему не допускается. Входные данные Входная строка содержит бинарную запись целого числа N. Выходные данные Программа должна вывести восьмеричную запись введенного числа.
Солнце_В_Городе
54
Для решения данной задачи необходимо преобразовать бинарное число в восьмеричное.

Давайте разберемся с пошаговым решением:

1. Считываем входное значение - бинарную запись целого числа N.

2. Проверяем, является ли число отрицательным, проверяя первый символ строки. Если первый символ является знаком "-", то число отрицательное, и мы удаляем его из строки и запоминаем эту информацию.

3. Преобразуем бинарное число N в десятичное число. Для этого, мы проходимся по каждой цифре бинарного числа, начиная с последней и умножаем значение этой цифры на 2 в степени ее позиции. Запоминаем результат.

4. Проверяем, было ли число отрицательным изначально. Если да, то добавляем знак "-" перед результатом из предыдущего шага.

5. Преобразовываем десятичное число в восьмеричное. Для этого делим число на 8 и запоминаем остаток. Затем делим полученное частное на 8 и снова запоминаем остаток. Процесс продолжаем до тех пор, пока частное не станет равным 0. Записываем остатки в обратном порядке и получаем восьмеричное число.

6. Выводим полученное восьмеричное число.

Вот как может выглядеть программа на языке Python:

python
binary_num = input("Введите бинарное число: ")

negative = False
if binary_num[0] == "-":
negative = True
binary_num = binary_num[1:]

decimal_num = 0
for digit in binary_num:
decimal_num = decimal_num * 2 + int(digit)

if negative:
decimal_num = -decimal_num

octal_num = ""
while decimal_num != 0:
octal_num = str(decimal_num % 8) + octal_num
decimal_num = decimal_num // 8

print("Восьмеричное представление числа:", octal_num)


После запуска программы, она запросит ввести бинарное число, например, "1101". Затем выведет восьмеричное представление числа, в данном случае "15".

Надеюсь, данное объяснение и пример программы помогут вам понять, как решить данную задачу. Если у вас возникнут еще вопросы - не стесняйтесь задавать их. Желаю успехов в обучении!