Реализовать функцию для транскодирования данных, содержащих битовые поля. В решении необходимо использовать побитовые операции
Реализовать функцию для транскодирования данных, содержащих битовые поля. В решении необходимо использовать побитовые операции. Неиспользуемые поля результата должны содержать нулевые биты.
Тесты:
>>> main('837820')
'180326'
>>> main('555892')
'901156'
>>> main('701213')
'802925'
>>> main('864135')
'917566'
Пытался решить так, но что-то не выходит...
def main(input_decimal):
input_decimal = int(input_decimal)
T1 = (input_decimal >> 0) & 0b1111
T2 = (input_decimal >> 9) & 0b11
T4 = (input_decimal >> 16) & 0b1111
new_T1 = T1 << 6
new_T2 = T2 << 13
new_T4 = T4 << 2
result = new_T1 | new_T2 | new_T4
return str(result)
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Нужно было немного подправить смещения и маски, а так подход корректный
def main(input_decimal):
input_decimal = int(input_decimal)
T1 = input_decimal & 0b1111
T2 = (input_decimal >> 4) & 0b111111
T4 = (input_decimal >> 17) & 0b111
new_T1 = T1 << 3
new_T2 = T2 << 14
new_T4 = T4
result = new_T1 | new_T2 | new_T4
return str(result)
for inp in '837820', '555892', '701213', '864135':
print(f'{inp} -> {main(inp)}')
837820 -> 180326
555892 -> 901156
701213 -> 802925
864135 -> 917566