I´m using shift to make optimizations on some math I have to do in a program written in C:

```
int h;
h = 104;
h = (h<<8)+(h<<6);
printf("offset: %d",h);

```

I get this result:

```
offset: -32256

```

When what I expect is 

```
(104* (2^8) ) +  (104 * (2^6)) = 33280

```

Can anyone explain why I´m getting the negative result and what can I do to get the result I expect?

I´m using the BORLANDC compiler with DOSBOX to run my program if that´s useful.