Как сказано в комментарии, diff & -diff
возвращает значение последнего бита, который был установлен в diff.Например:
diff = 14
.... = 1110 (binary)
.... ^ last set bit
.... 10 is the last set bit
.... 10 in decimal is 2
Другой пример
diff = 24
.... = 11000 (binary)
.... ^ last set bit
.... 1000 is the last set bit
.... 1000 in decimal is 8
Я бы порекомендовал прочитать рекомендации, как правильно сформулировать вопрос.Одна рекомендация, которую я могу дать лично, состоит в том, чтобы в конце вашего вопроса было одно предложение, которое бы точно подытоживало то, что вы хотите знать.