реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
Сергей Борщ
сообщение Aug 17 2013, 18:38
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (scifi @ Aug 17 2013, 19:34) *
Должен получаться не ноль, а некая константа,
Если CRC просто добавляется к данным без преобразований (инверсии), то должен всегда получаться ноль. Если совсем на пальцах, то CRC - остаток от деления полиномов. По аналогии с обычным делением, если A/B дает в остатке C, то (A-C)/B даст в остатке ноль. Всегда. При делении полиномов вычитание выполняется по модулю 2, а оно эквивалентно сложению по модулю 2 (то же происходит и при добавлению CRC к исходному сообщению).


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 18 2013, 05:07
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



A/B - Остаток С
(А-С)/B остаток ноль
это понятно

даже понятно что для модуля 2
A-C == A+C

(A+C)/B - остаток ноль

непонятно почему дописывание остатка в конце слова данных эквивалентно сложению. Вот какой момент мне не очень понятен... И в црц для модбаса у меня реально не получался ноль, но црц считается правильно так как сообщения принимаются и моими и чужими программами.

вот что в зависимости от полинома может выходить какая то константа и она часто ноль, это более приятная версияsm.gif хотя бы потому что не рушит мой мирsm.gif

Можно еще дальше на пальцах почему получается ноль?
Go to the top of the page
 
+Quote Post
SSerge
сообщение Aug 18 2013, 06:02
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Дописывание остатка это умножение сообщения на xn и сложение. A*xn+C
где n - длина crc.
Но у Модбаса есть ещё одна особенность: у них в начале регистр инициализируется не нулём, а 0xFFFF.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 18 2013, 17:27
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(SSerge @ Aug 18 2013, 10:02) *
Дописывание остатка это умножение сообщения на xn и сложение. A*xn+C
где n - длина crc.
Но у Модбаса есть ещё одна особенность: у них в начале регистр инициализируется не нулём, а 0xFFFF.


про особенность понятно, наверное это и не дает нулить сумму, хотя тоже не факт.

и про дописывание в конце - тоже понятно, там даже больше Х == 2, но от этого не становится очевидным почему такая добавка должна привести к нулевому остатку...
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 18:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.0145 секунд с 7
ELECTRONIX ©2004-2016