[MATH lang=eng]shl(x,n):x*2^n[/MATH]
[MATH lang=eng]shr(x,n):x/2^n[/MATH]
Если нужно, можно ещё добавить во вторую функцию trunc().
Но нужно понимать, что понятие побитового сдвига применимо к машинному представлению числа, а эта программа имеет дело с абстрактным понятием "число". Отсюда отсутствие таких низкоуровневых операций.
С уважением,
Михаил Каганский