网站中二级导航栏怎么做,搜狗网页搜索,辽宁建设工程信息网进不去,福州网站建设索q479185700效果 使用
复制code 保存为html
涉及内容
1、有限域、伽罗瓦域(256) 2、对数反对数 3、XOR 异或
两个因式各项相乘#xff0c;当系数项相乘时#xff0c;指数相加并mod(255) 合并同类项时#xff0c;相同项的系数合并为 XOR操作#xff1b;
伽罗瓦域依旧有些犯懵…效果 使用
复制code 保存为html
涉及内容
1、有限域、伽罗瓦域(256) 2、对数反对数 3、XOR 异或
两个因式各项相乘当系数项相乘时指数相加并mod(255) 合并同类项时相同项的系数合并为 XOR操作
伽罗瓦域依旧有些犯懵
代码
!DOCTYPE html
html langen
headmeta charsetUTF-8title生成表达式/title
/head
body
input typetext idnum
div idpowstr/div
div idresult/div
script//GF(256) 对数反对数表(借用qrCode.js)let QRMath {glog: function (n) {if (n 1) {throw new Error(glog( n ));}return QRMath.LOG_TABLE[n];},gexp: function (n) {while (n 0) {n 255;}while (n 256) {n - 255;}return QRMath.EXP_TABLE[n];},EXP_TABLE: new Array(256),//α 表达式 对数LOG_TABLE: new Array(256)//真数};for (let i 0; i 8; i) {QRMath.EXP_TABLE[i] 1 i;// 1 2 4 8 16 32 64 128}for (let i 8; i 256; i) {QRMath.EXP_TABLE[i] QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];//8: 16 ^ 8 ^ 4 ^ 1 29//9: 32 ^ 16 ^ 8 ^ 2 58}for (let i 0; i 255; i) {QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] i;}/*** 生成多项式 (α^0x-α^0)(α^0x-α^1) α^0x^2α^25x^1α^1x^0 这里的^ 表示指数** 常数项指代 alpha 表达式(这个应该叫对数吧整懵了)** param n 生成多项式最高阶 也就是纠错的码字数*/function polynomial(n) {let resultPolynomial;// 表达式结果let curr;let inputStr ;for (let i 0; i n; i) {//自定义表达式表示方式 key 表示x的阶数, value 表示x对应系数的反对数表达式的阶数即 α的指数curr {1: 0, 0: i};//原乘法表达式字符串inputStr (αsup${curr[1]}/supxsup/sup-αsup${curr[0]}/sup);resultPolynomial i 0 ? curr : mergePolynomial(resultPolynomial, curr);}//多项式结果字符串let result Object.keys(resultPolynomial).sort((a, b) b - a).map(d {return αsup${resultPolynomial[d]}/supxsup${d}/sup}).join();el_powstr.innerHTML inputStr;el_result.innerHTML result;}//合并两个多项式function mergePolynomial(left, right) {let leftKeys Object.keys(left).map(d d),rightKeys Object.keys(right).map(d d),leftLen leftKeys.length,rightLen rightKeys.length,resultObj {},kSum;// 表示各阶x 的常数项和for (let i 0; i leftLen; i) {for (let j 0; j rightLen; j) {kSum leftKeys[i] rightKeys[j];//判断是否需要合并同类项if (resultObj[kSum] ! null) {//合并同类项需要对常数项进行XOR ; 常数项相乘只相加常数项指数并模255,不过QRMath 中做了取模处理这里不再处理resultObj[kSum] QRMath.glog(QRMath.gexp(resultObj[kSum]) ^ QRMath.gexp(left[leftKeys[i]] right[rightKeys[j]]))%255;} else {resultObj[kSum] (left[leftKeys[i]] right[rightKeys[j]])%255}}}return resultObj;}let el_num document.getElementById(num);let el_powstr document.getElementById(powstr);let el_result document.getElementById(result);el_num.addEventListener(change,function(){polynomial(this.value||7);})/script
/body
/html