Я инициализирую беззнаковое короткое целое с a = 0xff (все биты установлены). Затем я присваиваю b значению a>>7, что должно дать (0000 0001), и это так. Однако странно то, что когда я присваиваю c значению a‹‹7, это не эквивалентно (1000 0000). Я проверил это, выведя 0x80 (что равно 1000 0000) и c, но это не одно и то же.
Вот код:
unsigned short int a = 0xff;
unsigned short int b = a>>7;
unsigned short int c = a<<7; // c should == 0x80
Я не уверен, в чем проблема. Любая помощь приветствуется. Спасибо.
P.S. Под «выводом» я подразумеваю вывод 0x80 и c в десятичной и шестнадцатеричной форме.