Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Технический флейм » Как считается CRC? |
<<Назад Вперед>> | Страницы: 1 * 2 3 | Печать |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 22 мая 2018 15:48 Сообщение отредактировано: 22 мая 2018 16:00
Rio444 написал: Приоритет сложения в Си выше, наверно имеется ввиду Мне непонятна запись полинома-делителя в виде "x^8 + x^2 + x^1 + x^0". c = (x^8) + (x^4) + (x^2) + (x^1); Это означает инвертирование бита3, потом 2, потом 1, потом 0 и сложение результатов (сам x при этом не меняется) Те если например X = 1100 (двоичные) 0100 + 1000 + 1110 + 1101 + 100111 (0x27) |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
i8088 написал: Спасибо, что стараетесь помочь. Насчет кода на Си Вы абсолютно правы. Там "^" действительно XOR - исключающее ИЛИ. Rio444 написал:Это означает инвертирование бита3, потом 2, потом 1, потом 0 и сложение Мне непонятна запись полинома-делителя в виде "x^8 + x^2 + x^1 + x^0". В указанной формуле это именно степень. Просто не знаю, как здесь верхний индекс сделать. |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
Вот здесь http://radiohlam.ru/?p=1406 немножко поподробнее и попонятнее. |
gtnhtyrj
Изгнанный
Откуда: из лесу, вестимо. Всего сообщений: 436 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 12 мар. 2012 |
Rio444 написал: Ну а в чём противоречие то ? степень Вот ежели в десятичной позиционной системе цифра домножает-ся на (основание==[10dec])^N ,т.е. в степени N , равной позиции цифры , то в двоичной позиционной отчего бы этому быть не так ? Между прочим давным давно даже в рк86 предложено изпользовать crc заместо контрольных сумм ( публикаци в журнале была ) и многие так и сделали. Не так уж и сложно, зато более надёжно. |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
petrenko написал: Так если бы было "2^8 + 2^2 + 2^1 + 2^0", то было бы вполне понятно. Ну а в чём противоречие то ? Но Что означает "х"? При чем тут степени? |
xoiss
Advanced Member
Всего сообщений: 711 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 окт. 2013 |
Rio444 написал: Всё, что между ними - темный лес. Или я туплю, или авторы статей переписывают друг у друга однотипные фразы, не вникая в них.https://ru.wikipedia.org/wiki/Циклический_код там всё понятно написано (ну, правда, надо алгебру знать, чтоб прочитать) если "на спичках", то полином — это просто такая модель // например, как ёмкость и индуктивность можно представить мнимой компонентой комплексного сопротивления можете вместо полиномов использовать двоичные записи целых чисел — наверное, так будет понятней и наглядней // полиномы в этой теории появились только потому, что во времена, когда эту теорию изобрели, учёные знали, что такое полиномы, а вот двоичные числа пока ещё были не в тренде "икс" тут вообще нипричём считайте, что степень икса - это просто индекс при очередном коэффициенте (который 0 или 1) суть - в коэффициентах иксы тут это просто формальная переменная, в неё никто никогда ничего не подставляет короче, проще и понятней работать не с полиномами, а с двоичными записями целых чисел умножение полиномов == умножение двоичных чисел разложение полинома на полиномы-сомножители == разложение целого числа на его множители, с представлением всех таких множителей в двоичной записи "деление на полином" == деление на целое число только здесь есть один нюанс, там на самом деле не "деление", а умножение на "обратную величину" и это суть не то же самое в некоторых множествах, например, у объекта может не существовать обратной величины (т.е. такой величины, которая при умножении на исходный объект даёт объект-единицу) — тогда на такой объект "поделить" нельзя и ещё один нюанс, все операции выполняются по модулю! поэтому результат такого "деления по модулю" (а точнее "умножения по модулю на обратную величину") - это совсем не равно обычному делению в общем, чтобы "разделить полином A на полином B по модулю P", надо сделать вот что: - найти такой полином B^-1, который является обратным данному полиному B по модулю P - умножить полином A на полином B^-1 по модулю P здесь вместо "полином" можно использовать "двоичное целое число" пример (на числах): - пусть P = 7 (двоичная запись 111) - пусть A = 3 (двоичная запись 11) - пусть B = 4 (двоичная запись 100) - тогда (B^-1) mod P = "такое число, которое будучи умноженным на 4 по модулю 7, даст 1" = 2 --- т.е. B^-1 = 2 (двоичная запись 10) // действительно (2*4) mod 7 = 8 - 7 = 1 !! короче, число 2 — есть обратная величина (ну типа как 1/n) для числа 4 по модулю 7 - тогда (A / B) mod P =def= (A * (B^-1) mod P) mod P = (3 * 2) mod 7 = 6 (двоичная запись 110) итак, мы получили, что 3 делённое на 4 по модулю 7 даёт 6 можно, кстати, проверить результат обратным умножением... т.е. 6 умноженное на 3 по модулю 7 должно дать 4 — проверим... ... действительно (6*3) mod 7 = 18 - 7 - 7 = 4 ---- внезапно сошлось! теперь от "чисел" перейдём к их двоичным записям... получим: 11 делённое на 100 по модулю 111 даёт 110 а теперь перейдём к нашим полиномам... получим: полином (x+1) делённый на полином (x^2) по модулю (x^2 + x + 1) даёт полином (x^2 + x) всё понятно? |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
xoiss написал: Спасибо, почти. всё понятно? xoiss написал: Что такое разделить, понимаю. в общем, чтобы "разделить полином A на полином B по модулю P", надо сделать вот что: Что значит "по модулю P"? |
kod007 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 23 мая 2018 21:03 Сообщение отредактировано: 17 июня 2018 12:53 |
xoiss
Advanced Member
Всего сообщений: 711 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 окт. 2013 |
Rio444 написал: множества чисел (или множества "объектов", в общем случае) бывают бесконечными и конечными Что такое разделить, понимаю. и те и другие — "мамы всякие нужны, мамы всякие важны" арифметические операции на бесконечных множествах — это обычные сложение, умножение и пр. на КОНЕЧНЫХ же множествах (на интервалах целых чисел, например) так вот просто операцию сложения не введёшь, т.к. результат может оказаться за пределами множества // например, на множестве чисел 0..9 если сложить 5+5, то результат 10 не будет принадлежать этому множеству, хотя слагаемые принадлежат такая "недоделанная" операция сложения на конечных множествах не имеет практического смысла поэтому придумали операцию сложения по модулю — ну, а почему бы и не придумать её основное свойство в том, что результат сложения-по-модулю всегда принадлежит тому же множеству // обычную операцию сложения на бесконечных множествах можно, кстати, рассматривать как "сложение по модулю бесконечности" короче, сложение-по-модулю — это как бы "просто сложение", но только на конечных множествах целых чисел никакой особой супер магии в нём нет — просто это ЕДИНСТВЕННЫЙ вариант, как ещё адекватно прикрутить операцию сложения чисел к конечным множествам чисел для множества { 0 ... (N-1) } сложение по модулю — это будет сложение по модулю N — ну, по определению например, если N=12, а множество будет 0..11, то сложение по модулю (7 + 8) mod 12 = 3 // см. "остаток от деления" — это суть то же самое в данном случае если на множестве (чисел, полиномов, объектов) определена операция сложения (сложения по модулю), то можно определить объект-ноль — это такой, который будучи прибавленным к любому объекту множества даёт тот же самый объект // не каждое множество имеет объект-ноль... например, множество 2..9 не имеет далее, на множестве можно определить операцию умножения по модулю ну, она определяется, как и обычно, как многократное сложение по модулю в множестве можно определить объект-единицу — это такой, который будучи умноженным на любой объект из множества даёт его же // ... пытаюсь объяснять "на пальцах", поэтому не буду использовать мат.термины типа группы, кольца и пр. — но если есть желание, то посмотрите их сами https://ru.wikipedia.org/wiki/Кольцо_(математика) // понятно, что примеры с числами - это лишь частный случай далее можно определить обратный элемент к данному — это такой, который будучи умноженным по модулю на данный элемент (на элемент, которому он обратен) даёт объект-единицу умножение-по-модулю на обратный-по-модулю элемент к данному можно считать делением-по-модулю на данный элемент, в каком-то смысле // один пример деления-по-модулю я приводил в пред. комменте ещё раз обращаю внимание, что деление-по-модулю в общем случае даёт совсем не такой результат, как обычное деление ... далее... интересные свойства наблюдаются в том случае, если модуль N является простым числом — поэтому я и обозначил его P в пред. комменте что за интересные свойства? ну, долго перечислять и даже не знаю, с чего начать — не столько интересные они, сколько полезные в плане массы практических приложений например, там всегда существует объект, обратный к данному, — а значит вполне определена операция деления-по-модулю, что офигительно полезно в ряде прикладных задач теории чисел ещё один пример деления по модулю: пусть модуль будет P=13 (простое число) множество тогда будет 0..12 поделим 6 на 3 по модулю 13 в этом множестве для этого надо сначала найти элемент, обратный 3 по модулю 13 // сразу скажу, что (1) он существует, и (2) он определён единственным образом! не вдаваясь в детали, элемент обратный 3 по модулю 13, — это 9 // проверим: (9*3) mod 13 = (27) mod 13 = 27-13-13 = 1 — действительно, получилась единица теперь умножаем 6 на 9 по модулю 13: (6*9) mod 13 = (54) mod 13 = 54-13-13-13-13 = 2 итак, частное от деления 6 на 3 по модулю 13 равно, как ни странно, 2 другой пример: пусть модуль будет P=13 (простое число) множество тогда будет 0..12 поделим 5 на 3 по модулю 13 в этом множестве ну, обратный элемент к 3 мы уже знаем — это 9 теперь умножаем 5 на 9 по модулю 13: (5*9) mod 13 = (45) mod 13 = 45-13-13-13 = 6 итак, частное от деления 5 на 3 по модулю 13 равно ... 6 --- внезапно то есть вывод: деление по модулю на конечных множествах чисел (ну, не хочу я использовать официальные мат.термины) в общем случае даёт непривычные числовые результаты ну, как прибили — так и держится, что тут скажешь ---- зато профит в том, что результат получается целым числом и никаких "остатков от деления"!!! (ну, если модуль P - это простое число) стало ли хоть как-то понятней, что такое "модуль" ? ... и что такое "разделить по модулю" ?? |
Кай
Гость
Divine Assassin Откуда: извне (from beyond) Всего сообщений: 13709 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2010 |
Оффтопик: Оффтопик: ...всегда ненавидел математику, а высшую, так абсолютно. |
<<Назад Вперед>> | Страницы: 1 * 2 3 | Печать |
Полигон-2 » Технический флейм » Как считается CRC? |
0 посетителей просмотрели эту тему за последние 15 минут |
В том числе: 0 гостей, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |