В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
azlidenp08oin
azlidenp08oin
09.09.2022 07:41 •  Информатика

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

Показать ответ
Ответ:
GMA111111
GMA111111
31.12.2020 17:47

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

Алгоритм перевода: разбиваем двоичные цифры на группы по 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(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота