Have you ever had to use bit shifting in real programming projects? Most (if not all) high level languages have shift operators in them, but when would you actually need to
yep. I have to write encryption algorithms before and that definitely uses them.
They are also useful when using integers etc for keeping track of statuses.