Моя цель здесь - удалить byte-count+1
бит слева от этого 8-битного целого числа (или, как вы часто его называете, unsigned char
.
Должно быть действительно просто, но этот бит кода
uint8_t val = 0xC3;
uint8_t byte_count = 2;
uint8_t cc = val << (byte_count+1) >> (byte_count+1);
printf("%X", cc);
Дает мне C3
в результате.
А этот
uint8_t val = 0xC3;
uint8_t byte_count = 2;
uint8_t cc = val;
cc <<= (byte_count+1);
cc >>= (byte_count+1);
printf("%X", cc);
дает мне только 3
.
Да, я пробовал заключать это в круглые скобки. Да, я пробовал преобразовать все в выражении к uint8_t
.
Почему это происходит?