Я работаю на встроенной платформе (ARM) и должен быть осторожен при работе с битовыми шаблонами. Давайте представим, что эта строка вне моего влияния:
uint8_t foo = 0xCE; // 0b11001110
Интерпретируется как неподписанное, это будет 206. Но на самом деле оно подписано, поэтому напоминает -50 . Как я могу продолжать использовать это значение как подписанное?
int8_t bar = foo; // doesn't work
также не делает (в результате 0x10 или 0x00 для всех входных значений)
int8_t bar = static_cast<int8_t>(foo);
int8_t bar = reinterpret_cast<int8_t&>(foo);
Я просто хочу, чтобы биты остались нетронутыми, т.е. (bar == 0xCE)
И наоборот, мне было бы интересно, как получить битовые шаблоны, представляющие отрицательные числа, в беззнаковые переменные, не путая битовый шаблон. Я использую GCC.