То, что - это сдвиг вправо со знаком.При сдвиге со знаком отрицательное число (обозначаемое «1» в старшем бите) часто заполняется слева.(Хотя это зависит от конкретного компилятора. Похоже, именно это и делает ваш компилятор.) 11100111 -> 11110011 -> 11111001 -> 11111100
Похоже, вы ищетебеззнаковый сдвиг.Если вы используете (signed char)(((unsigned char)-25)>>3)
, вы, вероятно, получите результаты, которые вы ищете.