I am trying to convert an int to 15 bits (may be positive or negative). What is the best practice for this?
int 15- , . int signed , C, . signed int unsigned. .
signed int somefield:15;
...
x.somefield = 12345;
int y = x.somefield;
int 15- , unsigned, . , OP , int . , . , , .
unsigned somefield:15;
...
x.somefield = 123456;
x.somefield = -1;
int y = x.somefield >= 0x4000 ? x.somefield - 0x8000 : x.somefield;
, , , . .
signed int somefield 15;
...
if (i >= INT15_MIN && i <= INT15_MAX) x.somefield = i;
else TBD();
int y = x.somefield;