伽罗瓦域(256) 生成指定纠错码字的生成多项式 (js)

效果

在这里插入图片描述

使用

复制code 保存为html

涉及内容

1、有限域、伽罗瓦域(256)
2、对数反对数
3、XOR 异或

两个因式各项相乘,当系数项相乘时,指数相加并mod(255)
合并同类项时,相同项的系数合并为 XOR操作;

伽罗瓦域依旧有些犯懵,,,,,,,,,,,,,,,,,,,,,,,,,,

代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>生成表达式</title>
</head>
<body>
<input type="text" id="num">
<div id="powstr"></div>
<div id="result"></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]}</sup>x<sup></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]}</sup>x<sup>${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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现二维码-完整三种编码流程加代码解析(javascript)

效果 输入内容&#xff1a;XXXwedewed生日//&sss乐❤XXXwedewed生日//&sss乐❤ 完整的演示效果为&#xff0c;输入内容后会将解码绘制的每一步都展示&#xff08;有点长就不全截图了&#xff0c;可以直接移至最后复制代码到本地运行&#xff09;&#xff1a; 原理…

three.js 拖动场景中物体(原生|拖拽控制器)

非控制器版 拖动场景中的物体实际上是在一个平行于窗口的平面中进行拖动&#xff0c;确定这个平面并确定鼠标在该平面中的位置变化&#xff0c;就将问题转换成简单的2d移动物体了 <!DOCTYPE html> <html> <head><meta charsetutf-8><title>015-…

element-ui 可复选树型表格

效果 思路 自定义模板当点击某个行复选框时&#xff0c;其所有后代复选框都要同步状态&#xff0c;且其直系父辈状态需要根据所点击复选框的状态来修正点击全选复选框时&#xff0c;批量同步所有行内复选框状态 代码 非封装组件&#xff0c;按需自行改写 确保引入element-ui…

树形可拖拽排序配置组件

效果 使用场景 vue2下自定义表格表头配置: 列排序&#xff0c;显示/隐藏等。确保表头以配置项的形式加载&#xff0c;这样表格才能对修改后的配置作响应 思路 1、表格使用render函数加载(如有疑问可私信)&#xff0c;通过类似如下的columns配置表头 columns: [{ label: 姓名…

自适应浮动表单填充布局脚本

效果 1、适合搜素表单布局&#xff0c;查询重置等功能块始终位于最后一行的最后一列 2、适合普通多行两端对齐&#xff0c;未填充满的行左对齐 思路 此脚本目的为实现整齐风格的表单布局&#xff0c;为了达到整齐的效果&#xff0c;每个表单元素或者块都要设置一致的 宽度…

矩阵字符串配置任意合并表格布局

效果 核心 布局配置矩阵&#xff08;以下为多个模式),可以使用|或\n表示矩阵行 const gridArr [1,2,a,b 3,4,a,b 5,6,a,b ,1,2 3,4 5,6 ,1,2,3,4 3,4]任意横向或者纵向相同的字符表示一个合并块 使用 <CalcTable grid"1,2,a,b|3,4,a,b|5,6,a,b" ><span…

bsc是指什么_为什么KPI令人厌恶?中小企业不要乱用KPI!

私信小编“绩效”两字&#xff0c;免费发送60分钟薪酬绩效管理内部培训视频。导读现在很多的企业都会对员工做一些绩效考核&#xff0c;大多数还是采用KPI的方式。但是员工对KPI的考核越来越反感&#xff0c;甚至出现抵触的情况。为什么会出现这种想象呢&#xff1f;其实很简单…

解决微信小程序 [Component] slot ““ is not found.

解决方式 当使用自定义组件或者slot标签作为组件A的插槽内容时&#xff0c;在组件A中必须定义一个默认插槽&#xff0c;对普通view等标签无限制。且因为wx:if为false的插槽等同没有定义 场景复现&#xff08;仅以自己遇到情况为例&#xff09; 1、调试基础库2.19.4 2、使用w…

列表排序应用FLIP动画(vue)

效果 原理详解 链接 1.beforeUpdate 获取first 变化前位置 (以id建立map映射) 2.updated 获取变化后位置 last 3.禁用transition并transform元素回初始位置 4.异步恢复transition 并取消 transform 代码 <template><div ref"container"><div style&…

面试项目亮点_码农:面试被问到自己项目亮点时,感觉自己的回答虚伪的不行!...

据我个人观察&#xff0c;大多数程序员都对自己现有的项目有吐糟的习惯&#xff0c;比如吐糟代码逻辑混乱&#xff0c;代码规范问题&#xff0c;代码可读性差&#xff0c;代码没有注释&#xff0c;没有文档&#xff0c;代码极度冗余等等&#xff0c;总之满眼看到的都是一些缺陷…

微信小程序 仿 SwipeCell 的滑动单元格 SwipeBox

效果 代码 页面 调用Page <block wx:for"{{4}}" wx:key"{{item}}"><view style"text-align:center;padding:20px"><swipe-box><view slot"left" style"">左侧内容</view><view class&q…

u852日期限制解决补丁_《赛博朋克》1.06补丁出炉:进一步提升主机版本稳定性...

《赛博朋克2077》虽说是出师不利&#xff0c;但是开发商CDPR承诺自己会持续优化这款“尚待打磨”的作品&#xff0c;这种态度还是要稍微肯定一下的。我们看到之前CDPR就已经推送了1.05补丁&#xff0c;修复了大量的BUG以及问题&#xff0c;并且以游戏主机的BUG修复为重点&#…

微信小程序原生横向步骤条steps

效果 代码 调用 <rug-step options"{{steps}}" active"{{stepActive}}"></rug-step>steps: [{ label: 步骤1 },{ label: 步骤步骤步骤步骤2 },{ label: 步骤3 },{ label: 步骤步骤步骤步骤步骤4 },{ label: 步骤4 },{ label: 步骤4 },{ label…

华为云 手机 电脑登录不了怎么办 账户_华为云手机能解决芯片困难,是否真的实在,来西瓜视频找答案...

最近&#xff0c;网上到处流传着华为发布鲲鹏云手机的信息&#xff0c;有人说这个云手机能化解华为眼下的芯片燃眉之急的样子。事实真的如此吗?小编最近关注到&#xff0c;华为的鲲鹏云手机又成为大家关注和谈论的热点&#xff0c;甚至还有人说&#xff0c;华为有了云手机&…

单选复选状态控制类

场景 不同的平台写基础组件&#xff0c;写累了&#xff0c;对于单选复选这种逻辑闭合的组件&#xff0c;javascript 控制脚本是可以完全独立出来的&#xff0c;仅对外暴露状态即可根据不同的平台和环境进行视图的渲染 效果 使用 初始化 let selector new Selector({key: va…

康普顿效应是弹性碰撞吗_如何正确解读物理实验结果系列之十二——康普顿效应与光子...

作者&#xff1a;彭晓韬日期&#xff1a;2020年01月10日[文章摘要]&#xff1a;康普顿效应和光电效应一样&#xff0c;被广泛认定为支持光为光子的重要证据之一。但光电效应因无法解释紫限&#xff08;高于一定频率的光也不能产生光电效应&#xff09;现象而倍受质疑。同样地&a…

前端 滑动拼图校验 纯js组合式调用

前端 滑动拼图校验 纯js组合式调用效果思路代码效果 思路 独立滑块和拼图&#xff0c;通过实例方法组合使用,滑块和拼图均通过指定元素容器加载内容通过canvas 路径切片 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF…

前端处理取消选择文件动作

背景 项目中用到各种选择文件&#xff0c;且有很大一部分操作几乎相同&#xff0c;想要尽可能的简化选择上传文件的步骤&#xff0c;因此选择脚本生成 <input type"file"/> 标签的形式完成函数式的上传文件调用&#xff0c;但是如果打开了文件管理器但是并未选…

methods vue过滤器 和_数据动态过滤技巧在 Vue 项目中的实践

这个问题是在下在做一个 Vue 项目中遇到的实际场景&#xff0c;这里记录一下我遇到问题之后的思考和最后怎么解决的(老年程序员记性不好 -。-)&#xff0c;过程中会涉及到一些Vue源码的概念比如 $mount、 render watcher等&#xff0c;如果不太了解的话可以瞅瞅 Vue源码阅读系列…