# Arithmetic Shifts

## Understanding Arithmetic Shifts

• Arithmetic Shifts are operations used to manipulate binary numbers by shifting their bits either to the right or the left.
• These types of shifts fill the space vacated depending on the type of shift and considering the sign bit as well.

## Arithmetic Right Shifts

• An arithmetic right shift pulls all bits one place to the right.
• The leftmost bit (most significant bit) retains its previous value. This bit is often known as the sign bit, because it’s used to represent whether a number is positive or negative in signed number representations.
• The rightmost bit is discarded.
• For example, if we arithmetically right-shift the binary number 1101 (which is 13 in decimal or -3 in two’s complement form), we get 1110 (which is -2 in two’s complement form).

## Arithmetic Left Shifts

• An arithmetic left shift effectively multiplies the binary number by 2, shifting all bits in the binary number one place to the left.
• The rightmost bit will become 0, and the original leftmost bit is discarded.
• For instance, if we arithmetically left-shift the binary number 1011 (which is 11 in decimal or -5 in two’s complement form), we would get 0110 (which is 6 in decimal).

## Practical Use of Arithmetic Shifts

• Similar to logical shifts, arithmetic shifts are useful for multiplication or division by two. An arithmetic shift left doubles the original number, while an arithmetic shift right halves it.
• Unlike logical shifts, arithmetic shifts consider the sign of the number. This makes them especially useful in multiplication and division operations for signed binary numbers.

## Important Considerations for Arithmetic Shifts

• The crucial difference to remember when comparing arithmetic and logical shifts is that arithmetic shifts take into account the sign of a number.
• As they keep track of whether a number is negative or positive, they are the better choice when dealing with signed binary numbers.
• However, wrongly using these operation while ignoring the sign bit condition can lead to inaccurate results. It’s therefore vitally important to understand their function and proper use.