
CRC码一般在k位信息位之后拼接r位校验位生成。
选择产生多项式为1011,把4位有效信息1100编程CRC码即G(X)=X^3+X+1=1011,M(x)=X^3+X^2=1100。
(1)将待编码的k位信息表示成多项式M(x)。得到M(X)=1100,即M(x)=X^3+X^2=1100
(2)将M(x)左移r位,得到M(x)xr。则取r=3M(X)X^3=X^6+X^5=1100000
(3)用r+1位的生成多项式G(x)去除M(x)xr得到余数R(x)。则被除数为1100000,除数为1011,进行二进制除法,求得余数为010。
(4)将M(x)xr与R(x)作模2加,得到CRC码。则CRC校验码为1100010
扩展资料:
凡设有校验码的代码,是由本体码与校验码两部分组成(如组织机构代码),本体码是表示编码对象的号码,校验码则是附加在本体码后边,用来校验本体码在输入过程中准确性的号码。每一个本体码只能有一个校验码,校验码通过规定的数学关系得到。
系统内部预先设置根据校验方法所导出的校验公式编制成的校验程序,当带有校验码的代码输入系统时,系统利用校验程序对输入的本体码进行运算得出校验结果之后,再将校验结果与输入代码的校验码进行对比来检测输入的正确与否。如果两者一致,则表明代码输入正确,系统允许进入,如果不一致,则表明代码输入有误,系统拒绝进入,并要求代码重新输入。
参考资料来源:百度百科-校验码
1000110(0)必须添0这样原来有3个1已经是奇数了所以添上0之后1的个数还是奇数个。
奇/偶校验(ECC) 是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。
如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是“0”,这样就可以保证传送数据满足奇校验的要求。
在接收方收到数据时,将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传送错误。
扩展资料
关于奇/偶校验的结论:
1、奇偶校验是通过奇偶校验位来进行校验地,奇偶校验位是二进制数的最后一位,是一个表示给定位数的二进制数中的1的个数是奇数还是偶数的二进制数。
2、奇偶校验位是最简单的错误检测码。
3、奇偶校验主要有两种方式:偶校验和奇校验,下面分 别介绍下:偶校验:如果给定的一组数据位中1的个数是奇数,那么偶校验位(也就是最后一位)就置位为1,反之,则置位为0,从而使得总的1的个数是偶数。
奇校验:如果给定的一组数据位中1的个数是偶数,那么奇校验位(也就是最后一位)就置位为1,反之,则置位为0,从而使得总的1的个数是奇数。
取权27,9,3,1(从左到右),取模11,则
源代码:4,8,1,6。
全因子:27,9,31。
乘积和108+72+3+6=130。
189/11=17······余数:2。
因此,其校验位为:2 带校验位的代码(新代码)为48162(把余数作为校验位)。
源代码
作为软件的特殊部分,可能被包含在一个或多个文件中。一个程序不必用同一种格式的源代码书写。例如,一个程序如果有C语言库的支持,那么就可以用C语言;而另一部分为了达到比较高的运行效率,则可以用汇编语言编写。
较为复杂的软件,源程序文件可以达到成千上万个。为了降低复杂度,必须引入一种可以描述各个源代码之间联系,并且如何正确编译的系统。在这样的背景下,修订控制系统(RCS)诞生了,并成为研发者对代码修订的必备工具之一。
要是单片机的串口,RS232 起始位, 停止位,都是串口自动加的,写程序是不需要管的。
校验位一般不用,在单片机上加校验位很麻烦的。需要写程序实现,并要用到TB8,RB8位。
在电脑上,校验位是可选的,选中后就由电脑自动加了。
1、51单片机SCON=0xDA,工作在方式3(方式2也可以)
串口 1 模式 3:
波特率是可变的,其它和模式2 相同
11 位数据通过TxD/P31 发送,通过RxD/P30 接收。一帧数据包含一个起始位(0),8 个数据位(低位在
先),一个可编程的第9 位,和一个停止位(1)。发送时,第9 位数据位来自特殊功能寄存器SCON 的
TB8 位接收时,第9 位进入特殊功能寄存器SCON 的RB8 位。
SMOD
串口1波特率在模式3 = ( 2 / 32 ) x BRT独立波特率发生器的溢出率
当SMOD = 0时,串口1波特率 = BRT 独立波特率发生器的溢出率 / 32,
当SMOD = 1时,串口1波特率 = BRT 独立波特率发生器的溢出率 / 16,
BRT独立波特率发生器的溢出率 = Fosc/12/( 256 - BRT ),当BRTx12 = 0时,
BRT独立波特率发生器的溢出率 = Fosc / ( 256 - BRT ),当BRTx12 = 1时
TB8:发送时校验位,可以奇校验或偶校验(直接置0或1),然后再发送。
RB8:接收时校验位,判断接数据是否正确。
2、程序
/
串口1中断
/
void RXD_Int_Service() interrupt 4
{
uint8 ch;
if(RI)
{
RI=0;
Usart1RxdDly=6; //超过03S清空计数
Usart1RxdBuf[Usart1RxdCnt]=ch;
Usart1RxdCnt++;
if(Usart1RxdCnt>=10)
{
Usart1RxdTrue=1; //接收正确。
Usart1RxdNum=Usart1RxdCnt;
Usart1RxdCnt=0;
}
}
if(TI)//防止发送中断
{
TI=0;
}
}
void Timer0_InSevice() interrupt 1
{
TH0=0xdc; //定义50ms 正常值0xfe 0x0c ,修正值:0xfe 0x16;
TL0=0x00; //110592MHz晶振
if(Usart1RxdDly)
{
Usart1RxdDly--; //03S没有接收到数据,清0计数。
if(Usart1RxdDly==0)
{
Usart1RxdCnt =0; //记数清0
}
}
}
利用c语言里的位 *** 作符就可以实现了,
不知道你要多少个数,怎么输出的不好下。
void main()
{
unsigned char x1=5,
x2=7,
x3=46,
x4=98;
//垂直 位计算
unsigned char shuizhi= x1|x2|x3|x4;
}
以上就是关于设信息编码为1100,生成多项式为1011,求CRC校验位和校验码全部的内容,包括:设信息编码为1100,生成多项式为1011,求CRC校验位和校验码、对二进制数据(1010001)采用奇校验时,校验位应该是、试用几何级数法确定原代码为4168的校验位和新代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)