Я читал этот ответ и упоминается, что этот код;
if (data[c] >= 128)
sum += data[c];
можно заменить на это:
int t = (data[c] - 128) >> 31;
sum += ~t & data[c];
Мне трудно это схватить. Может ли кто-нибудь объяснить, как побитовые операторы достигают того, что делает оператор?