Is `char c2=i1<<8>>24;` valid C syntax? (Where `i1` is and unsigned integer) Additionally, will it yield the result of shifting `i1` 8 bits left and 24 bits right respectively? I am unpacking a char previously stored in `i1`, along with three other chars. Code below:

```
unsigned char b3 = 202;
unsigned char b2 = 254;
unsigned char b1 = 186;
unsigned char b0 = 190;
...

unsigned int i1=202;
i1=i1<<8;
i1=i1+254;
i1=i1<<8;
i1=i1+186;
i1=i1<<8;
i1=i1+190;
...

char c1=i1>>24;
char c2=i1<<8>>24;

```