У меня есть два целых числа одного байта, поэтому каждое целое число может быть в диапазоне 0-255.Предположим,
a = 247
b = 8
Теперь двоичное представление каждого из них:
a = 11110111
b = 00001000
. Мне нужны следующие операции:
1) Конкат этих двух двоичных последовательностей, поэтомуследуя примеру, "a" concat "b" приведет к:
concat = 1111011100001000 -> that is 63240
2) Рассмотрим только первые n наиболее значимых битов, предположим, что первые 10 битов будут повторяться в:
msb = 1111011100000000
3) Измените порядок битов, это приведет к:
reverse = 0001000011101111
Для вопроса № 2 я знаю, что это всего лишь операция сдвига, для 3-х, которые я догадался преобразовать в шестнадцатеричное, затем поменять местами, а затем преобразовать в целое число, но я думаю также, что есть более элегантный способ.
Для числа 1 я написал это решение, но я ищу что-то более элегантное и производительное:
a = 247
b = 8
first = hex(a)[2:].zfill(2)
second = hex(b)[2:].zfill(2)
concat = int("0x"+first+second,0)
Спасибо