计算机组成原理CRC基础
本文最后更新于:2024年8月11日 晚上
CRC
异或
==相同为0 不同为1==
1+1=0 1+0=1 0+0=0 0+1=1
- 其实就是相加后==模2==
多项式(polynomial)
诸如$1x^6+0x^5+1x^4+0x^3+1x^2+1x^1+0*x^0$的一长串式子是CRC的==生成多项式==
使用的==目的是==避免计算过程中发生进位
一般使用简写的$x^6+x^4+x^2+x+1$的形式,可以从右到左的方式补写出多项式
此时CRC的==除数==就是生成多项式的各项系数(简式要自行补足)10101111
处理
首先在被除数==尾端加0==,个数是==多项式的阶==数,在上面的例子中,最高阶是6
,因此要补6个0
假设数据串为1101011011
,那么应该补到1101011011 000000
计算
对齐
首先将数据串的第一个1
与除数左对齐,然后进行异或操作
1 |
|
未处理的数据直接搬下来,作为新的被除数,依然记得需要与新的被除数进行==对齐==
1 |
|
这么重复操作,直到所有的数据都被处理
1 |
|
此时得到的结果从==第一位==1
开始到结束,就是CRC校验和,这里是101101
,他的长度为==被除数长度-1==
==注意==:如果最后的位数非常少(如0000011
)需要补0
,此时校验和为000011
组装
这时我们有:
- 数据串:1101011011
- CRC除数:1010111
- 校验和:111011
在整个数据串后附上校验和,就是带上CRC校验的数据:1101011011 111011
小测试
- 数据:
1101011011
- 多项式:$x^4+x+1$
1 |
|
计算机组成原理CRC基础
https://qlozin.top/2023/03/23/计算机组成 CRC/