Вы не можете сдвигать нецелые типы. Это незаконно в C ++.
Если вы хотите умножить или разделить на две степени, просто сделайте это. Смещение не работает так на числах с плавающей запятой из-за способа их представления.
Если вы действительно хотите сместить битовую комбинацию чисел с плавающей запятой, то вам нужно будет выполнить кастинг или использовать объединение.
union
{
float f;
int i;
} u;
u.f = 56.34f;
u.i >>= 1;
cout << u.f << endl;
Но ценность, которую вы получаете, совершенно бессмысленна (вы не делите на 2).