On 25/03/2014 21.05, Tim Hill wrote:
That said, for this project I cannot recall needing arithmetic shift,
just logical.
Probably because logical shifts are bitwise operations acting on bit arrays of
defined length, assuming no intepretation of their meaning and therefore having
many different applications where they cannot easily be replaced, while
arithmetic shifts are just a shortcut for arithmetic operations on integer
values coded in a specific way: two different beasts.
I don't use arithmetical shifts in C because thy are not guaranteed and because
their meaning is, in fact, an integer division of a signed value by an unsigned
power of two. I find it safer and clearer to write the latter.
Of course there may be particolr cases where one may want to operate on signed
integer values at bit level, but they are much less common than generic bit
manipulation or bit level operations on unsigned values.