Операции над беззнаковыми целочисленными типами используют модульную арифметику. Арифметика по модулю m во многом аналогична обычной арифметике, за исключением того, что результатом является положительный остаток при делении на m, если вы не сталкивались с ним в школе (подробнее см. Статью Википедия ). Например, 7 - 3 по модулю 10 - это 4, а 3 - 7 по модулю 10 - это 6, так как 3 - 7 - это -4, а деление его на 10 дает коэффициент -1 и остаток 6 (это также можно выразить с частным 0 и остатком -4, но это не так, как это работает в модульной арифметике). Возможные целочисленные значения по модулю m - целые числа от 0 до m-1 включительно. Отрицательные значения невозможны, и -200 не является действительным значением без знака ни при каких обстоятельствах.
Теперь, унарный минус означает отрицательное число, которое не является допустимым значением по модулю m. В этом случае мы знаем, что это между 0 и m-1, потому что мы начинаем с целого числа без знака. Поэтому мы смотрим на деление -k на m. Поскольку одно возможное значение - это коэффициент 0 и остаток от -k, другое возможное - это коэффициент -1 и остаток от m-k, поэтому правильный ответ - m-k.
Беззнаковые целые числа в C обычно описываются максимальным значением, а не модулем, что означает, что беззнаковое 16-битное число обычно описывается как от 0 до 65535, или как имеющее максимальное значение 65535. Это описывает значения путем указания m-1, а не m.
Какая у вас цитата говорит, что отрицательное значение берется путем вычитания его из m-1 с последующим добавлением 1, поэтому -k равно m - 1 - k + 1, то есть m - k. Описание немного оканчивается, но оно указывает правильный результат в терминах ранее существующих определений.