Por que combinar dois turnos de um uint8_t produz um resultado diferente?
Alguém poderia me explicar o porquê:
x = x << 1;
x = x >> 1;
e:
x = (x << 1) >> 1;
produzir respostas diferentes em C?x
é um tipo * uint8_t * (número inteiro longo sem assinatura de 1 byte). Por exemplo, quando passo128 (10000000)
no primeiro caso, ele retorna0
(como esperado, o bit mais significativo cai), mas no segundo caso, ele retorna o original128
. Por que é que? Eu esperaria que essas expressões fossem equivalentes?