Объясните этот фрагмент, который находит максимум двух целых чисел без использования if-else или любого другого оператора сравнения?

Найдите максимальное из двух чисел. Вы не должны использовать if-else или любой другой оператор сравнения. Я нашел этот вопрос на онлайн-доске объявлений, поэтому подумал, что должен задать его в StackOverflow

ПРИМЕР Ввод: 5, 10 Результат: 10

Я нашел это решение, может ли кто-нибудь помочь мне разобраться в этих строках кода

int getMax(int a, int b) {  
    int c = a - b;  
    int k = (c >> 31) & 0x1;  
    int max = a - k * c;  
    return max;  
}
74
задан smci 25 September 2016 в 02:07
поделиться