题目要求
要发送的数据为1101011011。采用CRC的生成多项式是P(X)=X4+X+1。试求应添加在数据后面的余数。为该数据添加CRC码,并验证他的正确性,改动CRC最后一位,验证他的正确性。
算法设计
① 循环计算,计算次数为扩大后的数据长度
② 如果数据首位不是0,分别将数据,特征码,校验首位所用的数据右移一位。否则执行③
③ 将特征码,校验 首位所用数据右移一位
④ 待求数如果小于0x10,跳出循环
全部代码
public class main {
private static final short poly = 0x13; //1 0011
/**
* 计算余数
* @param num 待检测序列
* @return 余数
*/
public static short getCrc(short num){
short extendPoly = (short) (poly << 9) ; //10 0110 0000 0000
short data = (short) (num << 4); //待发送数据左移四位 11 0101 1011 0000
short detectNum = 0x2000;