循环冗余校验(英语:Cyclic redundancy check,通称“CRC”)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化。由于本函数易于用二进制的电脑硬件使用、容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,因此获得广泛应用。redis学习、“计算机网络”、“计算机组成”等都有提及。
1、简介
循环冗余校验(英语:Cyclic redundancy check,通称“CRC”)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化。由于本函数易于用二进制的电脑硬件使用、容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,因此获得广泛应用。redis学习、“计算机网络”、“计算机组成”等都有提及。
2、算法原理
1 | 已知: |
3、计算实例
设计算机准备传送的信息是:1010110010001111,生成多项式是h(x) = x^5 + x^2 + 1 ,计算校验位,写出CRC
码。
解答:
1 | 生成多项式 h(x) = x^5 + x^2 + 1 = 100101 |
4、计算机模拟过程java
1 | /** |
5、redis与crc
(1)、哈希槽运算
redis集群使用哈希槽实现,其对key进行哈希计算采用crc16(key) & 0x3fff(16383),得到在16384个槽的其中一个,每个槽对应一个redis节点,如果为当前节点则执行请求,否则返回重定向节点操作。CRC16
算法产生的hash值有16bit,该算法可以产生2^16-=65536个值。
1 | 计算过程 https://blog.csdn.net/qq_16097611/article/details/82428397 |
6、引用
1 | https://www.jianshu.com/p/cb62b77d0359 |
- 本文作者: 初心
- 本文链接: http://funzzz.fun/2021/01/04/crc循环冗余码/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!