为了写计算机网络的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);
Last modification:January 6, 2025
如果觉得我的文章对你有用,请随意赞赏