Видимо, для кодирования отрицательных чисел используется прямой код: записывается минус и затем просто двоичное представление модуля числа.
Алгоритм перевода: разбиваем двоичные цифры на группы по 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
С:\School115\8Forms\8A
Объяснение:
С:\School115\7Forms\7A.
1. Поднялся на один уровень вверх. - получилось С:\School115\7Forms
2.Повторил 1 действие. - еще раз на уровень выше, С:\School115
3.Спустился в каталог 8Forms. - получилось С:\School115\8Forms
4.Спустился на один уровень вниз. - получилось С:\School115\8Forms\???, где ??? - какой-то неизвестный каталог
5.Снова поднялся на уровень вверх и спустился в каталог 8А. - сначала вернулся в С:\School115\8Forms, потом спустился в С:\School115\8Forms\8A
Видимо, для кодирования отрицательных чисел используется прямой код: записывается минус и затем просто двоичное представление модуля числа.
Алгоритм перевода: разбиваем двоичные цифры на группы по 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
С:\School115\8Forms\8A
Объяснение:
С:\School115\7Forms\7A.
1. Поднялся на один уровень вверх. - получилось С:\School115\7Forms
2.Повторил 1 действие. - еще раз на уровень выше, С:\School115
3.Спустился в каталог 8Forms. - получилось С:\School115\8Forms
4.Спустился на один уровень вниз. - получилось С:\School115\8Forms\???, где ??? - какой-то неизвестный каталог
5.Снова поднялся на уровень вверх и спустился в каталог 8А. - сначала вернулся в С:\School115\8Forms, потом спустился в С:\School115\8Forms\8A