鱼C论坛

 找回密码
 立即注册
查看: 2336|回复: 3

[已解决]CRC码的问题求助

[复制链接]
发表于 2023-5-12 18:28:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
CRC码在利用多项式计算冗余校验码的时候 所进行的模2除运算,

经过验证,我发现它本质是在进行除法的时候进行模2减运算,在上商的时候不需要考虑够不够减,只要当前被除数的第一位是1就可以上1
(如果当前被除数最高位是0则商上0再把除数照抄下来,当前被除数减一个0;所以这一步可以省略为被除数第一个高位之前有几个0就直接给商上几个0,然后把被除数里最高位的那些0去掉)

计算完之后所剩的余数作为冗余校验码,接收方拿着完整的数据除以多项式(依然是模2除)可以将多项式整除,为什么?这个问题在数学上或者图像上怎么理解,因为整个过程是不考虑借位和进位的,怎么维持算式的这种稳定性的
或者换一个说法,模2除的本质是每次上商之后计算目前余数是用的模2减,那为什么不用普通的减法和普通的除法(就是带借位除法和减法),模2的方法对比普通的方法有什么特殊性?
循环冗余校验码和汉明码背后的理论支撑我感觉很难真正理解(KMP算法也这样T T),这部分内容可以在哪本书上找到更详细的说明吗?微机原理?编码?离散数学还是什么?(瞎猜几个=_=,好心人指点下孩子吧)
最佳答案
2023-5-13 01:11:44
CRC码利用多项式计算冗余校验码的过程本质上是进行模2除运算。模2除法和普通的除法不同,它不存在借位和进位,因此使用模2除法可以避免一些运算上的复杂性和错误。

模2除法的本质可以通过布尔运算来理解。在模2运算中,1表示真,0表示假。模2加法等价于逻辑异或运算(^),模2减法等价于逻辑异或运算,模2乘法等价于逻辑与运算(&)。

循环冗余校验码(CRC)和汉明码都是数据校验的方法。它们的理论基础涉及到很多离散数学的概念,比如有限域、置换群、生成多项式等等。想要深入理解这些背后的数学原理,可以参考相关的书籍,比如《离散数学及其应用》、《现代编码理论基础》等。同时,计算机网络和通信课程也会讲到这些内容。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-12 18:29:38 | 显示全部楼层
首先,CRC码是一种循环冗余校验码,它可以检测数据传输过程中出现的差错。在计算CRC码时,采用的是模2除法运算,即将数据按位与生成多项式进行异或运算,得到余数作为冗余校验码。接收方收到数据后再进行一次模2除法运算,如果余数为0,则认为数据传输正确,否则认为出现了差错。

模2除法运算的本质是在进行除法的时候进行模2减运算。这是因为在模2运算中,只有两个可能的结果:0和1。因此,模2减法就相当于异或运算,而模2加法就相当于异或运算加上进位。这种特殊性使得模2除法运算更加简单和高效。

关于维持算式的稳定性,实际上在进行模2除法运算的过程中,并不需要考虑借位和进位。因为在模2运算中,借位和进位都等价于异或运算。因此,每次进行模2减运算时,都可以直接将当前被除数的第一位与除数进行异或运算,而不需要考虑借位和进位的问题。

至于CRC码和循环冗余校验码的理论支撑,这是一个比较深入的问题,需要涉及到很多数学和编码理论的知识。推荐可以阅读《编码:隐匿在计算机软硬件背后的信息》这本书,它详细介绍了编码理论和应用。此外,还可以参考《离散数学及其应用》等相关教材。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-13 01:11:44 | 显示全部楼层    本楼为最佳答案   
CRC码利用多项式计算冗余校验码的过程本质上是进行模2除运算。模2除法和普通的除法不同,它不存在借位和进位,因此使用模2除法可以避免一些运算上的复杂性和错误。

模2除法的本质可以通过布尔运算来理解。在模2运算中,1表示真,0表示假。模2加法等价于逻辑异或运算(^),模2减法等价于逻辑异或运算,模2乘法等价于逻辑与运算(&)。

循环冗余校验码(CRC)和汉明码都是数据校验的方法。它们的理论基础涉及到很多离散数学的概念,比如有限域、置换群、生成多项式等等。想要深入理解这些背后的数学原理,可以参考相关的书籍,比如《离散数学及其应用》、《现代编码理论基础》等。同时,计算机网络和通信课程也会讲到这些内容。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-13 23:54:18 | 显示全部楼层
陶远航 发表于 2023-5-13 01:11
CRC码利用多项式计算冗余校验码的过程本质上是进行模2除运算。模2除法和普通的除法不同,它不存在借位和进 ...

非常感谢指点,请问补码相关的内容也在离散数学里吗,
因为负数转补码有一步+1的操作,而且无论是小数、整数,还是整数小数都有的,他们的+1操作都是加在最后1位,我很好奇这是为什么
查了很多资料,都说是因为减法转换成加法之后,要保证同一个数负的加正的结果要为0,所以才这样做,
可是我想来想去,总感觉这个逻辑链有点像先射箭再画靶,说不出哪里怪怪的
补码里a+(-a)能为0,这只能说+1之后符号位参与运算可以保证这个特性,但是好像并没有解释为什么可以保证这个特性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 23:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表