Shift a non-negative integer left or right by `amount` bits. A right shift is logical (fills with zeros). A left shift grows freely unless a `width` is given, in which case the result is masked to that width and the input must fit it. Returns decimal, hex and binary.