Сергей Борщ 140 17 августа, 2013 Опубликовано 17 августа, 2013 · Жалоба Должен получаться не ноль, а некая константа,Если CRC просто добавляется к данным без преобразований (инверсии), то должен всегда получаться ноль. Если совсем на пальцах, то CRC - остаток от деления полиномов. По аналогии с обычным делением, если A/B дает в остатке C, то (A-C)/B даст в остатке ноль. Всегда. При делении полиномов вычитание выполняется по модулю 2, а оно эквивалентно сложению по модулю 2 (то же происходит и при добавлению CRC к исходному сообщению). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 18 августа, 2013 Опубликовано 18 августа, 2013 · Жалоба A/B - Остаток С (А-С)/B остаток ноль это понятно даже понятно что для модуля 2 A-C == A+C (A+C)/B - остаток ноль непонятно почему дописывание остатка в конце слова данных эквивалентно сложению. Вот какой момент мне не очень понятен... И в црц для модбаса у меня реально не получался ноль, но црц считается правильно так как сообщения принимаются и моими и чужими программами. вот что в зависимости от полинома может выходить какая то константа и она часто ноль, это более приятная версия:) хотя бы потому что не рушит мой мир:) Можно еще дальше на пальцах почему получается ноль? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 6 18 августа, 2013 Опубликовано 18 августа, 2013 · Жалоба Дописывание остатка это умножение сообщения на xn и сложение. A*xn+C где n - длина crc. Но у Модбаса есть ещё одна особенность: у них в начале регистр инициализируется не нулём, а 0xFFFF. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 18 августа, 2013 Опубликовано 18 августа, 2013 · Жалоба Дописывание остатка это умножение сообщения на xn и сложение. A*xn+C где n - длина crc. Но у Модбаса есть ещё одна особенность: у них в начале регистр инициализируется не нулём, а 0xFFFF. про особенность понятно, наверное это и не дает нулить сумму, хотя тоже не факт. и про дописывание в конце - тоже понятно, там даже больше Х == 2, но от этого не становится очевидным почему такая добавка должна привести к нулевому остатку... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться