- Logical shift
In
computer science , a logical shift is ashift operator that shifts all the bits of its operand. Unlike anarithmetic shift , a logical shift does not preserve a number's sign bit or distinguish a number'sexponent from itsmantissa ; every bit in the operand is simply moved a given number of bit positions, and the vacant bit-positions are filled in, generally with zeros (compare with acircular shift ).A logical shift is often used when its operand is being treated as a
sequence of bits rather than as a number.Logical shifts can be useful as efficient ways of performing multiplication or division of unsigned
integers by powers of two. Shifting left by "n" bits on a signed or unsigned binary number has the effect of multiplying it by 2"n". Shifting right by "n" bits on an "unsigned" binary number has the effect of dividing it by 2"n" (rounding towards 0).Because arithmetic right shift differs from logical right shift, many languages have different operators for them. For example, in Java and
JavaScript , the arithmetic right shift operator is >>; whereas the logical right shift operator is >>>. (Java only has one left shift operator (<<), because arithmetic left shift and logical left shift have the same effect.)C, however, has only one right shift operator, >>. Many C compilers choose which right shift to perform depending on what type of integer is being shifted; often signed integers are shifted using the arithmetic shift, and unsigned integers are shifted using the logical shift.
Example
If the bit sequence 0001 0111 were subjected to a logical shift of one bit position... (please refer images on right side)
* ...to the left would yield: 0010 1110
* ...to the right would yield: 0000 1011
Wikimedia Foundation. 2010.