已知生成多项式G(X),如何转变为二进制的系数啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知生成多项式G(X),如何转变为二进制的系数啊相关的知识,希望对你有一定的参考价值。

比如已知G(X)=X(4)+X+1,转变为二进制的数是多少呢,谢谢
比如G(x) = x^4 + x^3 + x^2 + x + 1 = 11111 ,这个结果是怎么得出的呢,多谢多谢

参考技术A G(X)=X^4+X+1=1*x^4+0*x^3+0*x^2+1*x^1+1*x^0= 10011,X^i项表示代码位置,系数表示代码值本回答被提问者采纳 参考技术B 我都是这样算的G(X)=X(4)+X+1
4+1说明二进制有5位 多项式只列出二进制值为1的位 所以第4,1,0位的值为1结果就是10011
G(x) = x^4 + x^3 + x^2 + x + 1的结果就为11111
参考技术C 2.32.2. 参考技术D 什么叫转变为二进制数,给个例子先.

将两个多项式相乘

【中文标题】将两个多项式相乘【英文标题】:Multiplying two polynomials 【发布时间】:2012-11-02 20:41:40 【问题描述】:

这是一些面试问题中提出的问题。

给定三个多项式 f(x)、g(x)、h(x),其中系数是二进制的。给出 [f(x)*g(x)] mod h(x) [所有运算的二进制系数]

多项式以这种格式给出……x3 + x + 1 被给出为“1011”。编写一个程序 char* multmod (char *f, char *g, char *h) 将输出多项式... (f*g) mod h

可能的方法是什么? 我们可以在位级别做点什么吗?

【问题讨论】:

注意:以下主要问题是针对原发帖者的。你能添加两个多项式吗?二进制多项式上的这种运算与常规多项式上的运算有何不同?你能将任意多项式乘以x^17 吗?你知道如何做多项式长除法吗? 是的,XOR 和移位的二进制操作应该可以解决问题。有些人缺少的是系数是二进制,也就是说在字段Z_2中。这意味着(x^3 + x^2 + 1) + (x^2) = (x^3 + 2x^2 + 1) = (x^3 + 1)1101 XOR 0100 = 1001! 【参考方案1】:

动机

这里的二进制系数意味着系数是模 2,在字段 Z_2 中,或者只是取值 0 和 1 并像位一样操作。这并不意味着系数是以二为底的任意整数。它们二进制的(正好取两个值),而不是简单地用二进制数字系统表示。

牢记这一点,这个问题很容易回答,是的,XOR 和(左)移位的按位运算就足够了。虽然不需要回答这个问题,但这个问题是由密码学引起的。它演示了散列中常用的一些按位运算与一些加密方案和抽象代数之间的联系,因此可以在密码分析中利用关于有限域上多项式的结果。将乘积取模另一个多项式是为了防止结果的次数超过一定的限制。机器寄存器上的操作自然会溢出。

加法

首先让我们谈谈加法。由于系数是模 2,因此添加 x + x = 2x = 0x = 0,因为 2 mod 2 = 0。因此,只要有两个相同的术语,它们就会取消,而当只有一个时,它会持续存在。这与XOR 的行为相同。比如添加(x^4 + x^2 + 1) + (x^3 + x^2):

(1x^4+0x^3+1x^2+0x^1+1x^0)+(0x^4+1x^3+1x^2+0x^1+0x^0) = (1x^4+1x^3+0x^2+0x^1+1x^0) 

或者,使用仅紧凑系数表示法,

10101 XOR 01100 = 11001

乘法

乘以x 会使每一项的幂加一。在紧凑表示法中,这相当于左移。

(1x^4+0x^3+1x^2+0x^1+1x^0) * x = (1x^5+0x^4+1x^3+0x^2+1x^1+0x^0)
10101 << 1 = 101010

所以,将多项式f(x) * g(x) 相乘,我们可以将f(x) 分别乘以g(x) 的每一项,每一项相当于移位,然后相加,相加相当于异或。让我们乘以(x^4 + x^2 + 1) * (x^3 + x^2)

(x^4 + x^2 + 1) * (x^3 + x^2) = (x^4 + x^2 + 1)*x^3 + (x^4 + x^2 + 1) *x^2
(10101 << 3) XOR (10101 << 2) = 10101000 XOR 01010100 = 11111100

所以,答案是x^7 + x^6 + x^5 + x^4 + x^3 + x^2

模减少

减少模h(x) 也相当容易。它确实要求您记住如何进行长除法。像乘法一样,我们将逐项进行。让我们继续同样的例子,取模h(x) = x^5 + x

(x^7 + ... + x^2) mod (x^5+x) = [x^7 mod (x^5+x)] + ... + [x^2 mod (x^5+x)]

现在,如果x^n 的度数n 小于h(x) 的度数,这里是5,那么没有什么可做的,因为h(x) 不会除x^n

[x^2 mod (x^5+x)] = x^2 or 00000100
[x^3 mod (x^5+x)] = x^3 or 00001000
[x^4 mod (x^5+x)] = x^4 or 00010000

当度数相等时,我们可以说h(x) 除以x^n 一次,我们已经超过了h(x) 的其余项。从-1 mod 2 = 1 开始,我们已经超过而不是低于几乎无关紧要,余数的标志也无关紧要。这里,

x^5 = (x^5 + x) – x, so
[x^5 mod (x^5+x)] = x, or 00000010

一般来说,当n = degree(h) 时,[x^n mod h(x)] = [h(x)-x^n]。在紧凑的形式中,这相当于关闭nth 位,这可以通过将h(x) 的表示与x^n 的表示进行异或来完成:

00100010 XOR 00100000 = 00000010.

x^n 的度数大于h(x) 时,我们可以将h(x) 乘以x^k 以使度数匹配,然后像前面的情况一样继续。

x^6 = (x^5 + x)*x – (x)*x = -x^2,所以 [x^6 mod (x^5+x)] = x^2, or 00000100, or in compact form (00100010

但是,更有效的是,只需移动上一个答案,我们将为 x^7 做这件事:

[x^7 mod (x^5+x)] = x^3, or 00001000

所以要收集,我们需要将这些结果相加,即在紧凑表示中进行 XOR-ing。

x^2 + x^3 + x^4 + x + x^2 + x^3 = x^4 + 2x^3 + 2x^2 + x = x^4 + x, or
00000100 XOR 00001000 XOR 00010000 XOR 00000010 XOR 00000100 XOR 00001000 = 00010010

结束语

我们可以要求Wolfram Alpha通过长除法为我们验证这个结果。给出的余数是x^4 - x,当系数为模2时,它等价于x^4 + x

可以将逐项乘法和取模步骤结合起来,例如乘以x 并对乘积取模,以获得更有效的算法,如果乘积的度数至少为h(x) 的度数,则这将是移位和异或。然后重复结果,乘以x 并取模,并记录乘以x^2 的答案。等等……

【讨论】:

【参考方案2】:

您实际上在做的是二进制操作。 你可以看看你的 CPU 是如何实现这些操作的。

http://en.wikipedia.org/wiki/Multiplication_algorithm http://en.wikipedia.org/wiki/Modulo_operation

【讨论】:

你能告诉我我怎么错了或者我怎么没听懂吗?这会有所帮助。我真的没有多想,我在 10 秒内回答了。多项式确实受到限制,因此您基本上可以将其表示为二进制数,并使用 cpu 实现的二进制运算算法。【参考方案3】:

这看起来像一个简单的多项式乘法和长除法问题。只需将多项式相乘,然后将它们相除。使用两个嵌套的 for 循环,乘法非常简单,对于长除法,请参阅:

http://www.sosmath.com/algebra/factor/fac01/fac01.html

http://en.wikipedia.org/wiki/Polynomial_long_division

【讨论】:

【参考方案4】:

这是一道知识题。基本上,除非您像高斯一样聪明,或者您已经知道同余数学,也称为“模算术”,否则您就完蛋了。为了了解这些内容,您可能需要阅读一本书,即 Allenby 的“Introduction to Number Theory with Computing”。

最终的关键知识是可以通过多种方法计算同余,其中最好的是相当古老的“平方和乘法”方法。基本上,每当你有一个二进制 1 时,你都是平方和倍数,但是当你有一个 0 时,你只是平方。完整的算法和解释在第页。艾伦比 79 号。

另一种方法是使用中文剩余Thereom,这可能是提问者的目标。

你在哪里申请?国家安全局?洛斯阿拉莫斯?这是一个相当棘手的问题。


太好了,因为是唯一真正回答问题的人而被否决。在这里要明确一点:毫无疑问,面试官期待利用平方和乘法算法,正如我上面所说的。在 RSA/密码算法中使用平方和乘法来进行快速模运算。见第225 了解此算法和 RSA 应用程序的描述:Implementation of Multinomial Standard Product for RSA State。面试官可能研究过 RSA,这就是他知道这种方法的原因。

【讨论】:

在我看来,这将是一个高中级别的问题。如果您知道如何将两个多项式相除并得到余数,则很容易回答。从那里到 NSA 有很长很长的路要走。 @n.m. - 准确地说。你让这个声音变得比 Tyler 更复杂。我在 11 年级的代数考试中有其中之一。 这其实很简单。然而,它与密码学和 NSA 高度相关......如果您注意系数是二进制的(即在 Z_2 中并减少模 2 本身),那么您会看到加法是 XOR 和乘法x^n 有点偏移。 ...所以,如果您对有限域和多项式的代数有大量的知识和成果,那么您可以将它们应用于研究二元运算的代数。但是,要简单地执行这些二进制操作,您根本不需要知道太多。 建议多项式长除法是一个完全错误的答案,它忽略了问题的重点:按位取模。 OP 甚至说“我们可以在位级别做点什么吗?”。长除法算法会很长并且在采访的时间范围内不可写,并且它不解决所使用的按位数据结构。平方和乘法算法是显而易见的答案。唯一的问题是,虽然这个算法足够短,但你必须非常聪明才能算出并在 15 分钟内写出来。

以上是关于已知生成多项式G(X),如何转变为二进制的系数啊的主要内容,如果未能解决你的问题,请参考以下文章

怎样将多项式转化二进制,要细致的过程,知道的请帮忙回答一下,谢谢啦!

已知权函数=1+x^2,区间服[负1,1],求首项系数为1的正交多项式,n=0,1,2,3,4

循环冗余验证码 生成多项式 如何 转换成二进制数

CRC校验

多项式板子

多项式如何转换二进制