Почему объединение двух сдвигов uint8_t дает другой результат?
Может ли кто-нибудь объяснить мне, почему:
x = x << 1;
x = x >> 1;
а также:
x = (x << 1) >> 1;
выдавать разные ответы на С?x
тип * uint8_t * (1-байтовое целое число без знака). Например, когда я передаю это128 (10000000)
в первом случае возвращается0
(как и ожидалось, самый значимый бит выпадает), но во втором случае он возвращает оригинал128
, Это почему? Я ожидаю, что эти выражения будут эквивалентны?