Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
myxasa
14 / 14 / 1
Регистрация: 31.05.2012
Сообщений: 210
Записей в блоге: 2
#1

Циклические коды - C++

21.11.2014, 21:01. Просмотров 1231. Ответов 3
Метки нет (Все метки)

Для построение циклического кода (CRC) нужен образующий полином, который мы должны найти по таблице неприводимых многочленов(см. вложение).. Обычно народ тупо забивает в массив эти значения и радуется...

Я хочу сделать функцию генерации таких многочленов...(это вроде поля галуа и прочее.. хз).

Вот код генерации 32 битных многочленов

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#define POLYNOMIAL 0x04c11db7L      // CRC-32
void gen_crc_table(void)
{
    register word16 i, j;
    register word32 crc_accum;
 
    for (i=0;  i< 256;  i++)
    {
        crc_accum = ( (word32) i << 24 );
        for ( j = 0;  j < 8;  j++ )
        {
            if ( crc_accum & 0x80000000L )
            {
                crc_accum = (crc_accum << 1) ^ POLYNOMIAL;
            }
            else
            {
                crc_accum = (crc_accum << 1);
            }
        }
        crc_table[i] = crc_accum;
    }
}

Next is a list of CRC polynoms that I could find:
CCITT-32: 0x04C11DB7 = x32 + x26 + x23 + x22 + x16 + x12 +
x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1

CRC-16: 0x8005 = x16 + x15 + x2 + 1

CRC-CCITT: 0x1021 = x16 + x12 + x5 + 1

CRC-XMODEM: 0x8408 = x16 + x15 + x10 + x3

12bit-CRC: 0x80f = x12 + x11 + x3 + x2 + x + 1

10bit-CRC: 0x233 = x10 + x9 + x5 + x4 + x + 1

8bit-CRC: 0x07 = x8 + x2 + x + 1

Не могу понять, как этот заставить этот алгоритм генерить числа, которые в приложенной таблице ...
0
Миниатюры
Циклические коды  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2014, 21:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Циклические коды (C++):

С++ (циклические алгоритмы) - C++
Большая просьба помочь с кодом по задаче. Проста, но разбираться в этой теме времени не хватает, а результат срочно нужен. &quot;В...

Циклические операторы. - C++
Здравствуйте, уважаемые, программисты. Помогите, пожалуйста, написать программу на языке Borland C++. Задание: Вводится...

Циклические операторы - C++
Нужна помощь. плз кому не трудно. Циклические операторы: 1) Вводится последовательность из N целых чисел. Найти наибольшее из всех...

Циклические алгоритмы - C++
Help!!! Задача предполагает применение оператора цикла while языка программирования С++. 1. Найти сумму ряда с точностью =0,001, общий...

Циклические алгоритмы. - C++
Циклические алгоритмы. 1. Известны оценки по информатике каждого из 20 учеников класса. Сколько учеников имеют по информатике оценку...

Циклические операторы (for,do,while) - C++
http://imageshack.us/a/img821/3474/aaaaaaaalz.jpg http://imageshack.us/a/img689/165/ffffue.jpg Объясните плс почему внутри цикла p=x...

3
D_in_practice
331 / 331 / 159
Регистрация: 02.10.2014
Сообщений: 666
21.11.2014, 22:51 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
http://www.cyberforum.ru/cgi-bin/latex.cgi?{11}_{2} + {2}_{10} = {101}_{2}
http://www.cyberforum.ru/cgi-bin/latex.cgi?{101}_{2} + {2}_{10} = {111}_{2}
http://www.cyberforum.ru/cgi-bin/latex.cgi?{111}_{2} + {2}_{10} = {1001}_{2}
http://www.cyberforum.ru/cgi-bin/latex.cgi?{1001}_{2} + {2}_{10} = {1011}_{2}
1
myxasa
14 / 14 / 1
Регистрация: 31.05.2012
Сообщений: 210
Записей в блоге: 2
21.11.2014, 23:33  [ТС] #3
забавно) просто нужна внимательность )
0
D_in_practice
331 / 331 / 159
Регистрация: 02.10.2014
Сообщений: 666
21.11.2014, 23:39 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cmath>
 
int main(){
    
    for(int i = 3; i <= 47; i += 2){//Г*Г*Г·ГЁГ*Г*Гї Г± 11 ГЁ äî .. ÷èñëî Г*Г°Г*ГўГЁГІГ±Гї
 
        int b = log2(i);
        int p = pow(2, b);
        for (int j = b; j >= 0; --j){
            if (i / p % 2 == 1){
                if (j != b)
                    std::cout << "+ ";
                if (j != 0){
                    std::cout << "x";               
                    if (j != 1)
                        std::cout << j << ' ';
                    else
                        std::cout << ' ';
                }else
                    std::cout << "1";
            }
            p /= 2;
        }
        std::cout << std::endl;
    }
}
1
21.11.2014, 23:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2014, 23:39
Привет! Вот еще темы с ответами:

Циклические алгоритмы - C++
Дано число D (&gt; 0). Последовательность чисел AN определяется следую- щим образом: A1 = 2, AN = 2 + 1/AN–1, N = 2, 3,... Найти первый из ...

Циклические алгоритмы - C++
Здраствуйте, необходимо решить такую задачу:): Известны сведения о количестве осадков, выпавших за каждый день мая. Первого мая...

Циклические сдвиги - C++
доброго времени суток, уважаемые форумчане. напишите пожалуйста код к задаче, от этого зависит получу ли я талон или нет: ...

Циклические алгоритмы - C++
Здравствуйте :) У меня вопросы по двум задачам, я знаю как начинать, но не знаю как завершить :( Если кто сможет, помогите, пожалуйста :)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.