Question: I've been reading the classic Hacker's delight and I am having trouble understanding the difference between logical shift right,arithmetic shift right, and rotate right. Please excuse if the doubt seems too simple. 

[![Also why is there no arithmetic shift left?](https://i.stack.imgur.com/4J4Gi.png)](https://i.stack.imgur.com/4J4Gi.png)

Answer: 
First remember that machine words are of fixed size. Say 4, and that your input is:

```
+---+---+---+---+
| a | b | c | d |
+---+---+---+---+

```

Then pushing everything one position to the left gives:

```
+---+---+---+---+
| b | c | d | X |
+---+---+---+---+

```

Question what to put as X?

1. with a **shift** put 0
2. with **rotate** put `a`

Now push everything one position to the right gives:

```
+---+---+---+---+
| X | a | b | c |
+---+---+---+---+

```

Question what to put as X?

1. with a **logical shift** put 0
2. with an **arithmetic shift** put `a`
3. with **rotate** put `d`

Roughly.

**Logical shift** correspond to (left-shift) multiplication by 2, (right-shift) integer division by 2.

**Arithmetic shift** is something related to 2's-complement representation of signed numbers. In this representation, the sign is the leftmost bit, then arithmetic shift preserves the sign (this is called sign extension).

**Rotate** has no ordinary mathematical meaning, and is almost an obsolete operation even in computers.
**Logical right shift** means shifting the bits to the right and MSB(most significant bit) becomes 0.

Example: Logical right shift of number 1 0 1 1 0 1 0 1 is **0** 1 0 1 1 0 1 0.

**Arithmetic right shift** means shifting the bits to the right and MSB(most significant bit) is same as in the original number.

Example: Arithmetic right shift of number **1** 0 1 1 0 1 0 1 is **1** 1 0 1 1 0 1 0.