На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Что есть CRC?
    Один простой вопрос:
    вообщем хочу замутить проверку в своей проге ( CRC ) для антиотладки wink.gif
    Как эта контрольная сумма создается? Существуют специальные алгоритмы, или алгоритм по составлению CRC можно придумать самому и все так делают?
      Суествуют специальные алгоритмы, обеспечивающие в среднем максимальную надежность (т.е., минимальную вероятность необнаружения искажений).

      Можно придумать и самому -- просто взять и просуммировать все байты в тексте mod 2^16, получив какое-то число. Его и называть контрольной суммой.
          Вот ещё пара ссылок. Может помогут.
          FAQ по вычислению CRC
          Algorithms Force
            Цитата
            Visitor, 29.11.03, 23:23
            Суествуют специальные алгоритмы, обеспечивающие в среднем максимальную надежность (т.е., минимальную вероятность необнаружения искажений).

            Более того, некоторые даже позволяют восстанавливать испорченные данные. Например распространенный CRC32 позволяет восстановить однократную ошибку (искажение).
              Цитата
              Например распространенный CRC32 позволяет восстановить однократную ошибку (искажение).


              Можно поподробнее об алгоритме, please.

              wbr,barrett
                Ну не совсем так... Даже теоретически невозможно восстановить однократную ошибку в кодовом слове, если мощность множества вариантов етой однократной ошибки больше или равна мощности множества всех возможных значений CRC...

                Для блоков меньше чем 2^15 бит с CRC32 можно попробовать найти етот один испорченный бит изменяя его значение и снова рассчитывая CRC32, пока не совпадет.
                Но, результат не гарантирован -- испорченных битов может быть и больше одного. А еще ошибки любят ходить пакетами -- когда портятся несколько подряд идущих битов... Поетому для таких целЕй используются настоящие корректирующие коды, исправляющие ошибки до T-кратных, в том числе и циклические, как CRC...
                Сообщение отредактировано: Visitor -
                  Цитата (Barrett @ 30.11.03, 06:13)
                  Цитата
                  Например распространенный CRC32 позволяет восстановить однократную ошибку (искажение).


                  Можно поподробнее об алгоритме, please.

                  wbr,barrett

                  По моей ссылочке, там книга, все подробно расписано.
                    Цитата
                    Visitor, 30.11.03, 03:29
                    Ну не совсем так...

                    К сожалению, не слишком силен в математике. Просто когда-то занимался реализациями протокола Z-Modem, использующего CRC32. Так вот, встречал вариант реализации в котором с его помошью восстанавливалась однократная ошибка одного бита в блоке из 1024 байт. Причем не просто методом подбора.
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0.0884 ]   [ 15 queries used ]   [ Generated: 5.10.26, 23:58 GMT ]