为了写计算机网络的CRC作业题方便验算,让ai写的CRC
function crc6WithQuotient(data, generator) {
// 将数据转换为数组
let dataBits = data.split('').map(bit => parseInt(bit));
let genBits = generator.split('').map(bit => parseInt(bit));
// 在数据后面添加 k 个零
let k = genBits.length - 1;
for (let i = 0; i < k; i++) {
dataBits.push(0);
}
// 初始化商
let quotient = [];
// 模 2 除法
for (let i = 0; i <= dataBits.length - genBits.length; i++) {
if (dataBits[i] === 1) {
quotient.push(1); // 记录商
for (let j = 0; j < genBits.length; j++) {
dataBits[i + j] ^= genBits[j];
}
} else {
quotient.push(0); // 记录商
}
}
// 获取余数 R
let rBits = dataBits.slice(dataBits.length - k);
return {
quotient: quotient.join(''), // 商
remainder: rBits.join('') // 余数
};
}
// 输入数据 D 和生成器 G
let D = '10101010101';
let G = '110011';
// 计算 CRC 和商
let result = crc6WithQuotient(D, G);
console.log('商:', result.quotient);
console.log('余数 R:', result.remainder);