Я думаю, что пример, который вы ищете, можно найти здесь .
Причина, по которой мы делаем дополнение 1, состоит в том, что когда дополнение 1 добавляется к сумме всех значений, а результат обрезается до длины в битах машины (16 бит в приведенном выше примере), это все 1-х. Процессоры имеют функцию, позволяющую брать 1-е число, а взятие 1-го числа для всех - это все-0.
Причина: процессоры ненавидят работать с битами, за исключением тех порций, которые обычно используются. Таким образом, добавление двух 64-битных чисел может занять 1 цикл, но проверка всех битов этого числа по отдельности займет намного больше (в простом цикле, возможно, до 8x64 циклов). Процессоры также имеют возможность тривиально принимать 1 дополнения и обнаруживать, что результат последнего вычисления был нулевым, без проверки отдельных битов и ветвлений на их основе. По сути, это оптимизация, которая позволяет нам очень быстро проверять контрольные суммы. Поскольку большинство пакетов в порядке, это позволяет нам проверять контрольную сумму на лету и гораздо быстрее доставлять данные в пункт назначения.