October 19, 1999 - The Bitwise Right Shift Operator | WebReference

October 19, 1999 - The Bitwise Right Shift Operator

Yehuda Shiran October 19, 1999
The Bitwise Right Shift Operator
Tips: October 1999

Yehuda Shiran, Ph.D.
Doc JavaScript

The bitwise right shift operator shifts the first operand the specified number of bits to the right. The first operand is a 4-byte integer to be shifted. The second operand specifies the number of bits to shift. All bits shifted out to the right are discarded. New bits coming in from the left are either 0s (when the number is positive) or 1s (when the number is negative). Right shifting preserves the sign of the operand, because the MSB (Most Significant Bit) determines the sign the number: it is 0 for positive numbers and 1 for negative numbers. Let's right shift a positive number first, the decimal 176, by three:

NameDecimalHexBinary
Op11760xB000000000000000000000000010110000
Op1 >> 3220x1600000000000000000000001011001100

Let's do a simple calculation:

NameDecimalBinary
Op1-1711111111111111111111111111101111
Op1 >> 3-311111111111111111111111111111101

Right shifting a number n places is the same as dividing it by 2n. Right shifting preserves the operand's sign and thus this rule applies to negative numbers as well. Normally, you would not divide a number by right shifting it, because it is not clear to the reader. You would probably use it only when the performance is a critical factor.