123/123 321/123 213/123
Я хотел бы сделать это автоматически на python
Вот апплет, где вы можете выполнять некоторые битовые операции, включая сдвиг .
У вас есть набор битов, и вы перемещаете некоторые из них за их пределы:
1111 1110 << 2 1111 1000, справа он заполнен нулями sh. :) </p>
0001 1111 >> 3 0000 0011 заполнено слева. Особый случай - ведущий 1. Он часто указывает отрицательное значение - в зависимости от языка и типа данных. Так часто требуется, что если вы сдвигаете вправо, первый бит остается неизменным.
1100 1100 >> 1 1110 0110 и сохраняется в течение нескольких смен:
1100 1100> > 2 1111 0011 Если вы не хотите, чтобы первый бит был сохранен, вы используете (в Java, Scala, C ++, C afaik и, возможно, больше) оператор тройного знака:
1100 1100 >>> 1 0110 0110 Нет эквивалента в другом направлении, потому что это не имеет смысла - может быть, в вашем особом контексте, но не в целом.
Математически, сдвиг влево - это a * = 2, 2 сдвига влево, a * = 4 и так далее. Сдвиг вправо - это / = 2 и т. Д.