Как оператор if -и побитовые операции совпадают в этом примере?

Я читал этот ответ , и упоминается, что этот код;

if (data[c] >= 128)
    sum += data[c];

можно заменить этим;

int t = (data[c] - 128) >> 31;
sum += ~t & data[c];

Я с трудом усваиваю это. Может кто-нибудь объяснить, как побитовые операторы достигают того, что делает оператор if?

23
задан Community 23 May 2017 в 12:30
поделиться