MatLab is pretty infuriating sometimes.
For example, if you cast a float as an int, it 'helpfully' rounds the value instead of truncating.
And if you cast a negative integer as unsigned, it returns zero.
Don't get me started on MatLab's fscanf function!
If you want to do a lot of shifting and don't want to multiply or divide by 2^shift, AND don't want to implement a bitshift wrapper to 'cure' the negative case, then I guess you'll need to write it in C and use MEX.
Remember, it's doubtful whether you will get any useful speed advantage using MatLab's bitshift, if that's what you want. Call me cynical =) I haven't actually tested that theory.