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