C программа для расчета CRC

Доброй ночи всем, я работаю над этим кодом, основываясь на логике, что для получения CRC вам нужно выполнить 2 операции XOR, первая из них: result = data ^ generator, затем она перемещается >> побитово по 16 битам и выполняет XOR снова и снова, так что окончание crc будет = результатом ^ генератора, пока он не проанализирует всю 32-битную последовательность. Генератор был полином, предоставленный моим учителем.

Пока это код:

{

int dato;       // 16 bits
int polin;      // generador
double r1;      // resultado de la trama de 32 bitsdato = 0x0000000001000100;
polin = 0x82086DB;
r1 = dato ^ polin;     // XOR
polin >>= 1;

while(r1 > 0){
r1 = dato ^ polin;
r1 = 0x1 >> dato;
}
printf("%x %x",dato,polin);
printf("\n\r CRC es: ", r1);
getch();
}

Моя проблема в том, что когда я пытаюсь выполнить его, он остается в «времени» и не дает никакого результата, надеюсь, кто-то может мне помочь.

-1

Решение

while(r1 > 0){
r1 = dato ^ polin;
r1 = 0x1 >> dato;
}

Ваш цикл while никогда не завершается, потому что значение r1 никогда не меняется после первой итерации. Результат первой строки никогда не используется, а вторая строка каждый раз возвращает один и тот же результат, потому что цикл не изменяет значение dato,

1

Другие решения

Других решений пока нет …