Объяснил так объяснил. Для далёких. Попробую показать "на пальцах" для остальных.
Число внутри 32-разрядного процессора состоит из 32 записанных друг за другом "битов", содержащих либо "0" либо "1".
Т.о. привычный нам ноль — это 32 бита с "0" внутри процессора.
Дальше будем полагать что числа пишутся/читаются в привычном нам порядке, слева направо. Бывает и наоборот. С какого конца читать — указывают в названии архитектуры процессора (big|litle endian).Единица в самом правом разряде "00000000000000000000000000000001" соответствует 2º (в степени 0), т.е. = 1. Следующие биты справа налево кодируют 2¹=2, 2²=4 и т.д.
Двоичное число "01000000000000000000000000000000" (единица в 31-м разряде) соответствует 2³º= 1073741824 (десятичное представление).
Чтобы записывать отрицательные числа, договорились использовать 32-й (самый левый) бит.
При этом число "10000000000000000000000000000000" = 2³¹ кодирует самое маленькое (для 32-разрядного процессора) число -2³¹. И оно уникально, т.к. соответствующее ему положительное число в 32 разряда не лезет (или надо знак убирать).
Остальные биты при этом обозначают сколько надо прибавить к -2³¹. То есть:
"10000000000000000000000000000001" = -2³¹ + 1 = -2147483647
"11111111111111111111111111111111" = -1 (прибавили всё кроме последней единицы)
В этом месте нетрудно заметить, что операция сложения чисел со знаком ничем не отличается от той же самой операции "без знака". Например, "-1 + 1":
"11111111111111111111111111111111" + "00000000000000000000000000000001" = "00000000000000000000000000000000".
* Разряды переполнились и обнулились. Не хуже чем на старых арифмометрах.
** В умных книжках такой способ представления отрицательных чисел называется "второе дополнение": в первом дополнении число "переворачивают": например из "1100" получается "0011". Во втором — добавляют 1 (получим "0100"). Но это выносит неокрепший моск и напрочь убивает понимание как с этим обращается процессор.