There is no doubt that in C-based languages the shift operators, like "bitwise
logic" operators, fall deeply into that twilight zone of program "bit
twiddling".  Remember that the first "application" written in the C language
was the Unix kernel, so the developers of the language were deeply attached to
such things.  However, the shift operators have found *some* usage outside of
low level systems programming.

David's mentioned of bit masking operations, which is, of course the original
motivating reason for creating the operators in the first place.  In most
application programming, especially in Java, there tends to be very little need
for this.  However, there are some special purpose usages that are fairly
interesting to application programmers.

For example, there is also a little known usage for compressed small integer
arithmetic.  It turns out that you can fit 5 8-bit numbers into a 64-bit long
(the other space is used for sign correction and overflow control), and do add
and subtract arithmetic on them.  On 64-bit architectures, you then get 5
arithemetic operations for the price of one.  In this very esoteric usage, the
shift operations are only needed for packing and unpacking the 5 8-bit numbers.

However, probably the most common application programming usage of shift
operators in C-based languages (outside C++) is for special case multiplication
and division.  Left shift is a fast way to multiply an integer by a power of 2,
while right shift is an equally fast way to divide an integer by a power of 2.

As for C++, far and away the most common usage of the shift operators is for,
believe it or not, I/O.  :-P :-P :-P :-P :-P :-P :-P :-P :-P :-P :-P :-P :-P

Left and right shift also have many, many other fascinating uses in the field
of cryptography, but very few of us have opportunity to work on such apps.

-- Roger Glover

--- David Rosenstrauch <[EMAIL PROTECTED]> wrote:
> At 02:19 PM 9/5/2002 -0400, you wrote:
> 
> >During the discussion about 'Getting digits from an integer' there was a 
> >reference to the binary shift operator >>.  In my 15 years of programming 
> >I have never once used the shift operator.  I am sure it must be used for 
> >something, but I can not think of anything useful.  Anybody out there 
> >every use it?  If so, what for?
> >
> >Thanks
> >Knud Hansen
> 
> 
> I think it's most commonly used in applying bit-masks (e.g., when you want 
> to strip out the "red" value out of RGB color integer values).
> 
> 
> DR


=====
-- Roger Glover

__________________________________________________
Do You Yahoo!?
Yahoo! Finance - Get real-time stock quotes
http://finance.yahoo.com

To change your JDJList options, please visit: http://www.sys-con.com/java/list.cfm

Reply via email to