文章目录

  • 前言
  • 一、代码实现
    • 1.引入库
    • 定义各类型的数组
    • 函数的声明与定义
    • 函数主体
  • 总结

前言

`有限域的出现,使得多项式的乘法可以通过查表得到加速。本文就介绍了基于有限域GF(2^8)的查表乘法功能,包括RS码的信息位矩阵与范德蒙德矩阵的相乘。


一、代码实现

1.引入库

代码如下(示例):

#define _CRT_SECURE_NO_WARNINGS //关闭安全检查
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define max 255

定义各类型的数组

代码如下(示例):

int table[256];  //正表数组,下标就是生成元g的指数,取值范围为 [0, 254]。下标对应元素就是g^k得到的多项式值。取值范围为[1, 255]。
int arc_table[256]; //反表数组 下标就是g^k得到的多项式值,取值范围为 [1, 255]。下标对应的元素就是生成元g 的指数,取值范围为 [0, 254]。
int a[max][max]; //范德蒙德矩阵
int b[1][max];  //信息位矩阵
int c[1][max];  //冗余位矩阵

函数的声明与定义

void juzhen1(int n);
void juzhen2(int m);
void juzhencheng(int k);
int mul(int x, int y);void juzhen1(int n)
{int m;for (int i = 0; i < n; i++){scanf("%d", &m);b[0][i] = m;}
}void juzhen2(int m) //以三列范德蒙德矩阵为例
{int i, j;int d[3];d[0] = 1; d[1] = 2; d[2] = 4;for (i = 0; i < m; i++){for (j = 0; j < 3; j++){a[i][j] = pow(d[j], i);}}
}void juzhencheng(int k)
{for (int i = 0; i < k; i++){int sum = 0;for (int j = 0; j < k; j++){sum += mul(b[0][j], a[j][i]);}c[0][i] = sum;}
}int mul(int x, int y)
{if (!x || !y)return 0;return table[(arc_table[x] + arc_table[y]) % 255];
}

函数主体

void main()
{int i;table[0] = 1;//g^0for (i = 1; i < 255; ++i)//生成元为x,对应本原多项式x^8 + x^4 + x^3 + x^2 + 1。{//下面是table[i] = table[i-1] * xtable[i] = table[i - 1] << 1; //相等于乘2,这里可以提高运算速度if (table[i] & 0x100) //如果数大于256,需要进行模运算{table[i] ^= 0x11D;//x11D就是 2^8 + 2^4 + 2^3 + 2^2 + 1 }}for (i = 0; i < 255; ++i)arc_table[table[i]] = i;/*printf("  ***");for (int j = 1; j < 255; j++){printf(" %4d", arc_table[j]);if (j%15==0)printf("\n");}*/for (i = 1; i < 256; ++i)//0没有逆元,所以从1开始{int k = arc_table[i];k = 255 - k;k %= 255;//使取值范围限定在[0,254]之间inverse_table[i] = table[k];}juzhen1(3);juzhen2(3);juzhencheng(3);printf("%d %d %d", c[0][0], c[0][1], c[0][2]);}

总结

以上就是今天要讲的内容,本文仅仅简单介绍基于有限域的多项式查表乘法,以及简单RS编码中的信息位矩阵与范德蒙德矩阵相乘得到冗余矩阵的操作。

但由于一个数据块还要涉及里面单个符号的问题,且unsigned char类型数据的范围为0-255,正好可以用在GF(2^8)下多项式值的表示。所以限制数据类型为unsigned char更为合适,具体操作留待读者自行实现。

GF(2^8)下查表实现多项式乘法相关推荐

  1. 线性表实现多项式相加c语言,用线性表实现多个多项式相加

    今天开始想复习一下数据结构,就从线性表开始吧. 今天是用线性表实现多个多项式相加这个题目,自变量是x. 题目描述如下: 在数学上,一个一元多项式Pn(x)可按降幂写成:Pn(x) = pn x^n + ...

  2. 行逻辑连接的顺序表实现稀疏矩阵乘法

    行逻辑连接顺序表 采用一位三元结构体组记录的每一个元素在矩阵中的具体位置,采用一维数组记录每行第一个非元素的位置,具有记录行数,列数和非元素总个数的结构体成员变量. 算法思想 逐行求积,每次处理一行, ...

  3. 顺序表讲解和顺序表实现增删查改

    前言 顺序表是一种参见的数据结构 特点:类似数组的储存,需要预先开辟空间已备数据插入.(1)同时顺序表也因此会存在和数组同样的问题(例如:越界)(2)同时因为其类似与数组的结构给二分查找这种算法提供了 ...

  4. 邻接表实现的有向带权图 及 图算法(C++)

    邻接表实现的有向带权图 相关概念 声明和定义 实现 1. 构造函数 2. 析构函数 3. 深度优先遍历 4. 广度优先遍历 5. 获取顶点在邻接表中对应的下标 6. 添加顶点 7. 移除顶点 8. 添 ...

  5. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言).doc

    图的邻接表实现迪杰斯特拉算法(C语言) /*迪杰斯特拉算法(狄斯奎诺算法)解决的是从源点到其它所有顶点的最短路径问题*/ //算法实现: #include #include #define MAX 2 ...

  6. 分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历_数据结构与算法学习笔记:图...

    图: 图结构区别于线性结构和树型结构,区别可见下图 逻辑上的图(graph)结构由顶点(vertex)和边(edge)组成. 一个图结构G包含顶点集合V和边集合E,任何两个顶点之间可以有一个边表示两者 ...

  7. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言)

    图的邻接表实现迪杰斯特拉算法(C语言). 迪杰斯特拉算法(狄斯奎诺算法)解决的是从源点到其它所有顶点的最短路径问题. 图的邻接表实现迪杰斯特拉算法(C语言) /*迪杰斯特拉算法(狄斯奎诺算法)解决的是 ...

  8. c语言哈希表电子辞典_C语言实现的哈希表实现程序

    下面我们一起来看一个C语言实现的哈希表实现程序了,这个程序没有过多的说明只是一个例子,大家有兴趣可以进入看看或测试一下. 为了巩固一下链表知识,自己实现的一个哈希表,在GCC 4.4.7下编译通过: ...

  9. WPS技巧之保护工作表实现允许部分单元格输入内容

    WPS技巧之保护工作表实现允许部分单元格输入内容 WPS表格中保护工作表的作用是设定密码,其它人员可以查看工作表的数据,但对工作表单元格里面内容默认没有办法修改,但是如果想对工作表中某些单元格进行修改 ...

最新文章

  1. Mysql-cobar集群安装部署手册
  2. Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序
  3. 一点通路由器模拟软件最新版_驾校宝典通最新版2020下载-驾校宝典通手机版 v1.0.2免费版...
  4. CNN目标检测(一):Faster RCNN详解
  5. java中的左值右值_利用左值右值实现树状结构
  6. 00003-回文数的判定-leetcode-解法不唯一,1.reverse最简单,2.数学方法很有意思
  7. 今天的西红柿就跑了的P8U8源码
  8. CodeIgniter中引用某一个表情(smiley)
  9. SqlHelper操纵数据库工具类
  10. java 高德地图 车型比价计算_高德地图的高速公路过路费计算功能是如何实现的?有相应开放的API吗?...
  11. 求数组子序列和最大值
  12. 全网最完整金融时间序列模型+动态模型
  13. 企业邮箱账号,如何在foxmail上创建
  14. 连接数据库出现错误代码为18456
  15. Chrome 火焰图
  16. Flutter 开发错误集合二
  17. 手把手教你搭建SpringBoot+MySQL+Mybatis项目(采坑日记)
  18. 军犬舆情每日热点:LIGO发现最大黑洞;智能锁广告侮辱拆弹战士
  19. 搜狗拼音皮肤 php文件,手把手教你制作搜狗输入法皮肤
  20. 服务器环境(插件)搭建

热门文章

  1. 步进电机选型(转载)
  2. 管理员发布小程序,却显示自己不是项目成员
  3. 华大单片机DMA学习
  4. 如何确定抽样统计的最小样本量(附:随机抽样统计的抽样误差Excel计算表格)...
  5. amd超频软件LINUX,AMD官方超频工具下载_AMD OverDrive 超频工具-PChome下载中心
  6. 于众目睽睽之下隐藏图像:深度隐写术
  7. 新能源汽车BMS开发工程师
  8. 利用python把dcm格式转化为jpg格式
  9. IO流如何选择字节流和字符流??
  10. STM32 CubeMX 看门狗