c++编程的一个关于余式排序的问题(crc)

来源:百度知道 编辑:UC知道 时间:2024/05/30 06:15:03
题目:分析所有10位二进制信息对应的CRC码。生成多项式x8+x2+x+1
环境要求:Windows95/98/2000/XP/dos
功能要求:要编写程序;要对相等余式分类统计。

首先是要所有的10位二进制信息,
我的一个自程序是:
char str[1023];
int j=1023;
for(j=1023;j>=0;j--)
{itoa(j,str,2);
}
把十进制强制成二进制...

生成多项式x8+x2+x+1好办
就是
char crc[9]={1, 0, 0, 0, 0, 0, 1, 1, 1 }

之后的求余式和对相等余式分类统计就不知道了,

目前我的水平限于看懂程序,要我自己编程还真头疼啊
望高手解救!!

#include <stdio.h>

int main()
{
int iNum = 0;
int i = 0;
char crc[9];

printf("input a num:");
scanf("%d", &iNum);
printf("\n");

_asm
{
pushad
lea ebx, crc
add ebx, 8
xor esi, esi
mov eax, iNum
L1:
cmp esi, 9
jz exit
shr eax, 1
jc char0
mov [ebx], 30h
jmp next
char0:
mov [ebx], 31h
next:
inc esi
dec ebx
jmp L1
exit:

popad
}

for (; i < 9; i++)
{
printf("%c", crc[i]);
}
return 0;
}

一样的道理,用移位运算每次向右位移一位就出来了(C++好象有位运算符吧>>),没有必要去算.
至于位运算的资料,自己看会吧:
http://bbs.chinaunix.net/archi