Другие ответы объясняют идею битшифтинга, но вот конкретно, что происходит для 100 >> 3
100
128 64 32 16 8 4 2 1
0 1 1 0 0 1 0 0 = 100
100 >> 1
128 64 32 16 8 4 2 1
0 0 1 1 0 0 1 0 = 50
100 >> 2
128 64 32 16 8 4 2 1
0 0 0 1 1 0 0 1 = 25
100 >> 3
128 64 32 16 8 4 2 1
0 0 0 0 1 1 0 0 = 12
Вам не нужно часто его использовать, если только вам не нужно действительно быстрое деление на 2, но даже тогда НЕ ИСПОЛЬЗУЙТЕ ЕГО. это делает код намного сложнее, чем нужно, и разница в скорости незаметна.
Основное время, которое вам когда-либо понадобилось бы использовать, было бы, если вы работаете с двоичными данными, и вам конкретно нужно сдвинуть биты вокруг. Единственное реальное использование, которое я использовал для этого, это чтение и запись тегов ID3, которые хранят информацию о размере в 7-битных байтах, например:
0xxxxxxx 0xxxxxxx 0xxxxxxx 0xxxxxxx.
, который должен быть составлен так:
0000xxxx xxxxxxxx xxxxxxxx xxxxxxxx
чтобы получить нормальное целое число в памяти.