Consider the following code:

```
int A[5] = {0,1,2,3,4};
int i=1;
int test = A[i];

```

The MIPS assembly that this code yields will shift **i** 2 bits left to multiply by 4, since we fetching an int (4 byte). I understand this completely.

Now if we set

```
int i = -1; //or any negative number

```

the assembly produced will actually be the same. But here, we are shifting a negative number by 2 bits, which could actually return a positive number. So, my question is, A[negative\_number] will not offset the address by this negative number, but it will produce a somewhat random result, right?