Вот как это работает для 32-битных целых чисел. Он работает так же для любой другой длины в битах.
Самое большое отрицательное число - -1.
Наименьшее отрицательное число -2 ^ 31.
Переполнение происходит, если результат больше или равен 2 ^ 31 или меньше, чем -2 ^ 31.
Вы получаете наибольший результат вычитания, вычитая наименьшее число из наибольшего. -1 - (-2 ^ 31) = 2 ^ 31 - 1. Это достаточно мало.
Вы получаете наименьший результат вычитания, вычитая наибольшее число из наименьшего. -2 ^ 31 - (-1) = - (2 ^ 31 - 1). Это больше, чем -2 ^ 31.