Это потому, что каждый неправильный бит распространяет четность либо по горизонтали, либо по вертикали.
подумайте о том, чтобы ваша матрица битов:
A B C D
E F G H
I J K L
M N O P
теперь некоторые из этих битов передаются неправильно,таким образом, у вас есть в общей сложности y ошибок, которые лежат вокруг, но вы не знаете, где внутри матрицы.
Если вы идете по строкам (таким образом, вы вычисляете горизонтальную четность), вы будете уверены, что сумма каждой четности строк по модулю 2 будет 0, если у вас есть четное количество ошибок в этой строке, 1 в противном случае.Вы также будете уверены в том, что рассматриваете все из них, поскольку выполняете эту работу для каждой строки.
Наконец, если вы предполагаете исправить бит из строки и изменить другой в другом, последнийрезультат не изменится, так как вы в основном удаляете 1 из строк, чтобы добавить его в другом месте.
Затем подумайте о том, чтобы сделать это по столбцам, в результате вы получите точно такое же поведение, единственное отличие состоит в том, что ошибки могутраспределяться по-другому, но сложение вертикальной четности по модулю 2 будет учитывать те же соображения.Поскольку общее количество ошибок одинаково, оно будет четным или нечетным числом для строк и столбцов.