|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.04.2017, 19:10 | #1 |
Форумчанин
Регистрация: 17.07.2012
Сообщений: 140
|
Что такое циклическое суммирование?
Здравствуйте, в инете не нашел такого объяснения, по логике возможно это чтение каких то цифр в цикле и при остановке цикла будет наверно то самое значение итоговое. Но у меня ситуация немного иная, у меня с одно компьютера на другой уходят 20 групп данных по 2 байта в каждой группе через сом порт и мне нужно выполнить циклическое суммирование, по сути 40 байт данных, что это такое может быть не подскажете? 2 байта это наверно "слово" по правильному называется, может быть каждое слово надо перевести в 10сс или 16сс и эти 20 полученных цифр просуммировать, а полученный результат перевести в 2сс и попытаться поместить в 21е слово. Причем интересно сказано, если в этом 21 слове получилось переполнение, то к младшему разряду надо добавить единичку, что даст эта добавленная единичка и как она спасет итоговое слово от переполнения, вот я это тоже не понял, может вы знаете что это за действие такое?
|
20.04.2017, 20:27 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Циклическая сумма - это просто сумма всего, обычно берется по модулю какому-нибудь. Погуглите про CRC, например.
|
21.04.2017, 07:35 | #3 |
Форумчанин
Регистрация: 17.07.2012
Сообщений: 140
|
Спасибо, очень интересно, про циклическую сумму нашел, но мне почему-то кажется, что если я просуммирую 20 слов, то переполнение может быть наверняка, ну или с вероятностью более 50%. Грубо прикинул на калькуляторе, переполнение теоретически на 1 слово (16 бит или 2 байта) для 20 слов, может быть целый байт. Наверно есть разные методы проверки (сличения) CRC. Нашел например такую методику Например, у вас ест данные: 124356...386754, которые передаются по сети. Вы их суммируете и получаете остаток, от деления суммы на 256, к примеру: (1+2+4+3+5+6 + ... +3+8+6+7+5+4) mod 256= 212; И по сети передаете данные, а под конец - это число - 212. получатель данных складывает данные, которые получил, и получает их остаток от деления на 256. Если это 212, то, скорее всего, во время транспортировки данных не произошло их искажения. А иначе - искажение произошло. Но мне в документации предлагается при переполнении просто добавить 1 к младшему разряду CRC не знаете, что это даст?
|
21.04.2017, 07:50 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Это даст совпадающий алгоритм вычисления контрольной суммы. Если мы с вами договарились, что когда вы ко мне прийдете, то постучите три длинных стука, а если прийдете не один, то три длинных и один короткий... что даст один короткий, кроме известной для нас двоих инфы?
|
21.04.2017, 07:55 | #5 |
Форумчанин
Регистрация: 17.07.2012
Сообщений: 140
|
не видел что вы ответили, надо было сперва обновить экран
|
21.04.2017, 07:57 | #6 |
Форумчанин
Регистрация: 17.07.2012
Сообщений: 140
|
|
30.04.2017, 23:04 | #7 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,619
|
Контрольная сумма с переносом (КС), описаннря в стартовом посте, и CRC (Cyclic redundancy check) - это вообще-то как винтовка Мосина обр. 1891г. и АК-74. Вот здесь https://habrahabr.ru/post/278171/ очень популярно описано. Если к примеру, в передаваемом пакете просто переставить местами байты, CRC это обнаружит, а КС - нет. Таким образом, CRC - более мощное средство контроля, особенно если CRC-16 или выше. Но за надежность приходится платить некоторым усложнением алгоритма.
https://ru.wikipedia.org/wiki/%D0%A6...BA%D0%BE%D0%B4 - здесь тоже хорошо изложено. Последний раз редактировалось digitalis; 30.04.2017 в 23:09. |
30.04.2017, 23:38 | #8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
digitalis, к чему ваш пост? Вы еще про Хафмана, свертки и помехоустойчивое кодирование расскажите.
|
01.05.2017, 11:33 | #9 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,619
|
Да просто расставить точки над ё - для ясного понимания картины. Для меня дополнительная информация никогда не была лишней - пригодится когда-нибудь. Ошибался, выходит.
Помехоустойчивое кодирование ТС-у для сдачи лабы вряд ли понадобится. А если считается, что мой пост нарушил стройное течение форума, то его и удалить недолго. |
13.06.2017, 09:46 | #10 |
Форумчанин
Регистрация: 17.07.2012
Сообщений: 140
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
что такое f. | spezzA | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 13.06.2011 16:21 |
Что такое хорошо, а что такое плохо... | EL_MoC | Microsoft Office Word | 6 | 14.04.2011 18:49 |
Что такое ^= ? | k1r1ch | Общие вопросы C/C++ | 3 | 10.01.2010 17:15 |
Что такое SE | LOPKOT | HTML и CSS | 5 | 31.08.2009 21:50 |
то такое мастерство в программировании, что такое мастер программист и что он может? | Cezar | Свободное общение | 29 | 02.06.2007 23:48 |