Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Технический флейм » Как считается CRC? |
<<Назад Вперед>> | Страницы: 1 * 2 3 | Печать |
pahan
Advanced Member
Откуда: Химки, М.О. Всего сообщений: 1070 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мар. 2015 |
Я тоже уже всю математику забыл, да и никогда настолько хорошо не знал Что означает "х"? При чем тут степени? Практически - "степень" - на самом деле не степень, а битовая позиция, в которой в делителе есть 1. Так что x^8 + x^2 + x^1 + x^0 на самом деле - деление на 100000111 Наглядный пример в вики (конечно нерусской). |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Я все откладываю разбирательства с CRC (кстати в статьях по BIOS часто под CRC понимается простая сумма байтов/слов) Но код написан на Си, здесь я могу подсказать В Си оператор ^ это побитовое исключающее ИЛИ ( а оператора возведения в степень как такового нет, есть функция pow) |
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 |
<<Назад Вперед>> | Страницы: 1 * 2 3 | Печать |
Полигон-2 » Технический флейм » Как считается CRC? |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |