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

# October 19, 1999 - The Bitwise Right Shift Operator

 October 19, 1999The 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:

 Name Decimal Hex Binary Op1 176 0xB0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 Op1 >> 3 22 0x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0

Let's do a simple calculation:

 Name Decimal Binary Op1 -17 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 Op1 >> 3 -3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1

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.