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

Создайте программу, которая преобразует целое число (возможно, отрицательное) из двоичной системы счисления в восьмеричную. Перед отрицательными числами добавляется знак "-". Запрещено преобразовывать число в десятичную систему счисления. Входные данные Вводная строка содержит двоичное представление целого числа N. Выходные данные Программа должна вывести восьмеричное представление введенного числа.
Мурзик

Мурзик

Хорошо, давайте начнем решение этой задачи шаг за шагом.

Для преобразования целого числа из двоичной системы счисления в восьмеричную, мы будем разбивать двоичное число на группы по три разряда, начиная с правого конца. Если в исходном числе недостает разрядов, мы будем дополнять его нулями слева.

Давайте приступим к созданию программы:

Step 1: Сначала нам понадобится считать входные данные. В данном случае, вводная строка содержит двоичное представление целого числа N. Давайте прочитаем это значение и сохранение в переменной:

binary_number = input("Введите двоичное число: ")


Step 2: Следующим шагом будет проверить, является ли число отрицательным. Если число отрицательное, мы добавим знак "-" перед результатом. Для этого, мы можем проверить первый символ строки и сохранить значение в отдельной переменной:

if binary_number[0] == "-":
is_negative = True
binary_number = binary_number[1:] # удалить знак "-" из числа
else:
is_negative = False


Step 3: Теперь мы можем проверить, нужно ли дополнить число нулями слева до полного количества разрядов. Так как каждая группа состоит из трех разрядов, мы будем дополнять число нулями до длины, кратной трем:

while len(binary_number) % 3 != 0:
binary_number = "0" + binary_number


Step 4: Теперь мы готовы преобразовать каждую группу трех битов в восьмеричное число. Мы начнем с правой стороны и будем перемещаться влево по группам. Для каждой группы, мы преобразуем ее в восьмеричное число, используя следующую формулу:

octal_digit = int(binary_number[i:i+3], 2)

Здесь `i` - текущая позиция, и мы используем срез строки для извлечения группы трех битов. Функция `int(..., 2)` преобразует двоичное число в десятичное число.

Step 5: Наконец, мы будем сохранять восьмеричные цифры в отдельный список и объединять их в одну строку.

octal_number = []
for i in range(0, len(binary_number), 3):
octal_digit = int(binary_number[i:i+3], 2)
octal_number.append(str(octal_digit))
result = "".join(octal_number)


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

if is_negative:
result = "-" + result
print("Восьмеричное представление числа:", result)


Полный код программы будет выглядеть следующим образом:
python
binary_number = input("Введите двоичное число: ")

if binary_number[0] == "-":
is_negative = True
binary_number = binary_number[1:]
else:
is_negative = False

while len(binary_number) % 3 != 0:
binary_number = "0" + binary_number

octal_number = []
for i in range(0, len(binary_number), 3):
octal_digit = int(binary_number[i:i+3], 2)
octal_number.append(str(octal_digit))
result = "".join(octal_number)

if is_negative:
result = "-" + result

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


Теперь у нас есть программа, которая преобразует целое число из двоичной системы счисления в восьмеричную. Надеюсь, это решение понятно и полезно! Если у вас есть еще вопросы, не стесняйтесь спрашивать.
Знаешь ответ?
Задать вопрос
Привет!
hello