Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2017, 11:53   #11
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

Такие алгоритмы основаны на полиномиальной арифметике над конечными полями. Если вы не знаете алгебру, представление о кодах у вас сложится очень примитивное и отдаленное. Не тратьте время.
Aoizora вне форума Ответить с цитированием
Старый 17.06.2017, 11:49   #12
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Если это ответ to седьмой, то я не согласен: если человеку надо надежное решение для помехоустойчивой связи, можно применить готовый вариант (конечно, тщательно его протестировав) без глубокого погружения в дебри теории. К примеру, много есть да'мов, отлично водящих машину, но не отличающих карбюратор от аккумулятора (это просто пример - не в обиду ТС), и в этом смысле CRC надежнее простого циклического суммирования или XOR.
А если это ответ мне, то я тем более не согласен
digitalis на форуме Ответить с цитированием
Старый 17.06.2017, 13:02   #13
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

>если человеку надо надежное решение для помехоустойчивой связи, можно применить готовый вариант (конечно, тщательно его протестировав) без глубокого погружения в дебри теории

Конечно, можно, но применение черных ящиков неинтересно. Вопрос ОПа был в том, что такое CRC, а без алгебры дать ответ на него невозможно. По коду можно только увидеть логические операции, которые как-то мочалят дворды, и за всеми этими действиями не видно сути.
Aoizora вне форума Ответить с цитированием
Старый 17.06.2017, 18:10   #14
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Ему виднее : хочет - применит готовое, хочет - погрузится в теорию.
Не в обиду, но как совет новичку: цитирование здесь производится проще и красивше.
digitalis на форуме Ответить с цитированием
Старый 19.06.2017, 09:17   #15
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Если это ответ to седьмой, то я не согласен: если человеку надо надежное решение для помехоустойчивой связи
Спасибо всем за ответы, решение мне не нужно, в ТЗ на проект решение по CRC уже принято, мне просто нужно было понять как оно работает, как считается и по возможности понять почему принято именно такое решение и чем оно отличается от других. так что все ответы по данному вопросу в теме оказались мне полезны.
седьмой вне форума Ответить с цитированием
Старый 14.07.2017, 10:44   #16
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от Aoizora Посмотреть сообщение
Если вы не знаете алгебру,
Алгебру вроде бы все знают, ее же в школе проходят!
Дошли руки продолжить начатую тему, вот нашел такое выражение
Цитата:
Вычисляется циклическая контрольная сумма следующим образом. Весь массив информации рассматривается как одно N-разрядное двоичное число, где N — количество бит во всех байтах массива. Для вычисления контрольной суммы это N-разрядное число делится на некоторое постоянное число ( полином ), выбранное специальным образом (но делится не просто, а по модулю 2). Частное от этого деления отбрасывается, а остаток как раз и используется в качестве контрольной суммы.
Вот не понял, что подразумевается под словосочетанием "делится по модулю 2" - это имеется в виду, что Полином в данном случае равен 2?

вот еще нашел пример
Цитата:
деление по модулю a mod n

Результатом этой операции является остаток от целочисленного деления, например, если мы делим 11 на 3, то целых частей у нас получается 3, (так как 3*3=9), в остатке будет 2, это число и будет результатом деления по модулю:

11/3 = 3 целых и 2 в остатке. Т.е. 11 mod 3 = 2 (11-3*3=2)
из этого примера получается, что там выше, где написано по модулю 2 - это полином и есть.

Последний раз редактировалось седьмой; 14.07.2017 в 11:14.
седьмой вне форума Ответить с цитированием
Старый 14.07.2017, 11:01   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Алгебру вроде бы все знают, ее же в школе проходят!
В школе и химию проходят, но на хим. завод и лаборатории берут почему-то с ВУЗов. Откройте нормальный учебник алгебры и посмотрите хотя бы.

Цитата:
Вот не понял, что подразумевается под словосочетанием "делится по модулю 2"
Ну вы же в школе алгебру прошли... не? Начните с https://ru.wikipedia.org/wiki/%D0%A1...83%D0%BB%D1%8E

Цитата:
это имеется в виду, что Полином в данном случае равен 2?
Нет. У вас же операция "проходит" по модулю, а не полином.
p51x вне форума Ответить с цитированием
Старый 14.07.2017, 13:29   #18
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Спасибо за помощь, но с вашей ссылкой все стало еще запутаннее, там во первых не объяснение что такое деление по модулю 2, а сравнение 2х чисел по одному модулю, вот выдержка из вашей ссылки
Цитата:
Например, числа 32 и -10 сравнимы по модулю 7, так как оба числа при делении на 7 дают остаток 4:

32 = 7 ⋅ 4 + 4 ; {\displaystyle 32=7\cdot 4+4;} {\displaystyle 32=7\cdot 4+4;} − 10 = 7 ⋅ ( − 2 ) + 4. {\displaystyle -10=7\cdot (-2)+4.} {\displaystyle -10=7\cdot (-2)+4.}
Таким образом остаток от деления будет 4 по модулю 7 и сразу для двух разных чисел. Отсюда следует, что если я настрою в коде проверку достоверности передачи данных CRC по модулю два, то такая проверка не будет однозначной.
седьмой вне форума Ответить с цитированием
Старый 14.07.2017, 13:45   #19
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
там во первых не объяснение что такое деление по модулю 2
Так я ж написал - "начните с". Теперь с делением: у вас есть нечто (вы же прочитали как это называется?) состоящие из элементов (0, 1), если вы хотите S1 / S2 по модулю 2, то фактически вам надо найти такой x, что S2 * x =S1 mod 2

Цитата:
Таким образом остаток от деления будет 4 по модулю 7 и сразу для двух разных чисел. Отсюда следует, что если я настрою в коде проверку достоверности передачи данных CRC по модулю два, то такая проверка не будет однозначной.
Именно. Поэтому у CRC подобных штук есть длина, минимальное и максимальное расстояние между "кодовыми словами", количество ошибок, которые они могут обнаруживать и другие параметры.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что такое 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