我相信点开它的人都是想来学怎么算的,所以就直接讲计算方法不讲原理了(⁎⁍̴̛ᴗ⁍̴̛)
题目是这样的:

第一种解法,不用脑子不过老师不喜欢:
直接算出f*g = x^10+x^9+x^8+x^7+x^4+x^2
接着就是让这个长长的式子与p(x)取模,如下:
(PS:这玩意的除法蛮奇妙的,不要当成高数课的普通多项式除法)

没错,答案就是x^5+x^4+x^2+x
第二种解法,号称快速解法:(我也觉得蛮麻烦的就是了)
首先你可以看到 f(x)它不属于GF(2^6),它有x^6,6超过5了,所以我们要把f(x)先处理
这里给出的不可约多项式p(x)可以看成是本原多项式( ó × ò)
那么就让f(x)与p(x)进行取模运算:(看了上面的除法,你可以自己算算这个)

OK了,f(x)重获新生,华丽转生为x^5+x
接下来两位就都属于GF(2^6)了
重头戏来啦:
首先是转化二进制,由于是GF(2^n),就是n比特,此题为6

接下来对g(x)的010100拆分,变成010000⊕000100
f * g = 100010 * ( 010000 ⊕ 000100 )
= (100010 * 010000 ) ⊕ (100010 * 000100 )
【这里的拆分就是异或分,把1一个个拿出来,
再举个例子就是10011变成10000⊕00010⊕00001这样子】
为什么要这样拆,因为有先辈帮我们搞出了一种算法,也就是接下来我们继续进行的操作:
第一步:我们来看100010直接乘上000010,其实就是相当于乘上一个x对吧,所以100010要左移一位,得到000100,由于在6比特限制下,要删去多出的1

第二步:你发现系数n下对应的是1,这对于GF(2^n)【此题n为6】来说就要打起精神了,还没完,我们还要做一个异或运算,正是和p(x)对应的系数二进制1000011进行异或!

没错,000111就是此式在GF(2^6)下的真正运算结果!
第三步:继续算100010*000100,相当于乘上一个x^2,需要用到上一个的结果000111:

没错!其实就只需要用000111左移一位就可以了!这里你发现系数6下对应的是0,所以无事发生,得出了此式的真正运算结果!就是001110
第四步:继续算100010*001000,如法炮制!用上次的结果001110左移一位,得到011100!
这里是0011100,最左边系数6下对应的是0,所以无事发生,结果就是011100
第五步:继续算100010*010000,如法炮制!用上次的结果011100左移一位,得到111000!
这里是0111000,最左边系数6下对应的是0,所以无事发生,结果就是111000
算完了(..>◡<..)
我们得到100010*000100=001110以及100010*010000=111000
因此
f * g = 100010 * ( 010000 ⊕ 000100 )
= (100010 * 010000 ) ⊕ (100010 * 000100 )
=111000 ⊕001110
=110110
对应的多项式就是x^5+x^4+x^2+x
【剧终】
PS1:有点草率,确实只是篇片面的就提论题,希望点开的你有所收获,如若没有,祝你下一篇好运
PS2:有人也许会说“诶你这个第二种方法哪里简单了,怪复杂的,还不如第一种”,这个嘛,我以为第二种熟练掌握的话兴许是快于第一种的,当然式子如果简单我也会直接用第一种方法就是了(^^)
PS3:如果有不对的地方或者有更好的解法请友善指出,非常感谢!
PS4:关于不可约多项式与本原多项式,这俩我还没研究明白,也许我直接说这里的不可约就是本原有点问题?
PS5:本意是自己的小笔记,不过我感觉会有人需要它,还是公开一下吧
&spm=1001.2101.3001.5002&articleId=142426551&d=1&t=3&u=625b18e4b4de4e63942e070ab500e6b8)
5780

被折叠的 条评论
为什么被折叠?



