Вопрос задан 03.11.2023 в 05:01. Предмет Информатика. Спрашивает Москаленко Мария.

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

счисления в восьмеричную. Перед отрицательными числами ставится знак "-". Переводить число в десятичную систему не разрешается. Входные данные Входная строка содержит двоичную запись целого числа N Выходные данные Программа должна вывести восьмеричную запись введённого числа.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Жигулина Яна.

Видимо, для кодирования отрицательных чисел используется прямой код: записывается минус и затем просто двоичное представление модуля числа.

Алгоритм перевода: разбиваем двоичные цифры на группы по 3 (начиная справа) и переводим каждую группу отдельно.

Код (Python 3):

N = input()

sign = ""

if N[0] == "-":

   sign = "-"

   N = N[1:]

oct_reversed = ""

while len(N) > 0:

   N, last_triplet = N[:-3], N[-3:]

   oct_digit = 0

   while len(last_triplet) > 0:

       oct_digit *= 2

       if last_triplet[-1] == "1":

           oct_digit += 1

       last_triplet = last_triplet[:-1]

   oct_reversed += str(oct_digit)

oct = sign + oct_reversed[::-1]

print(oct)

Пример ввода:

-1110010

Пример вывода:

-132

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для перевода целого числа из двоичной системы счисления в восьмеричную, вам нужно выполнить следующие шаги:

1. Прочитайте входную строку, представляющую двоичное число.

2. Определите, является ли число положительным или отрицательным, и сохраните эту информацию.

3. Если число отрицательное, удалите знак "-" и сохраните его для будущей обработки.

4. Преобразуйте двоичное число в восьмеричное, разбив его на группы по три цифры справа налево и преобразовывая каждую группу в восьмеричную форму.

5. Объедините восьмеричные группы, добавив знак "-" обратно, если число было отрицательным.

Давайте реализуем эту программу на Python:

```python # Функция для перевода двоичной группы в восьмеричную def binary_to_octal(binary_group): octal_group = 0 power = 0 for digit in binary_group[::-1]: octal_group += int(digit) * (2 ** power) power += 1 return octal_group

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

# Проверка на отрицательное число is_negative = False if binary_number[0] == "-": is_negative = True binary_number = binary_number[1:]

# Дополните двоичное число нулями слева до кратности трём while len(binary_number) % 3 != 0: binary_number = "0" + binary_number

octal_result = "" i = 0

# Преобразование двоичных групп в восьмеричные и их объединение while i < len(binary_number): binary_group = binary_number[i:i + 3] octal_group = binary_to_octal(binary_group) octal_result += str(octal_group) i += 3

# Вывод результата с учетом знака if is_negative: octal_result = "-" + octal_result

print("Восьмеричная запись:", octal_result) ```

Эта программа сначала преобразует двоичное число в восьмеричное, разбив его на группы по три бита и преобразуя их в восьмеричную форму. Затем программа объединяет восьмеричные группы и добавляет знак "-" обратно, если исходное число было отрицательным.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос