所谓的模2整系数多项式就是系数是整数,并且,只能是0, 1的多项式,即所有系数是模2(mod 2)的整数
每个多项式,按照多项式每项的幂对应2进制的幂,一一对应加起来
可以对应到一个二进制整数
多项式加减法,可以理解为两个对应二进制整数按位 异或(xor)
可以理解的是,两个多项式加法与减法结果是一样的
(L + R = L + 2R - R = L - R, 根据定义, 2R mod 2 = 0)
比如
L = x + 1 对应 11
R = x^2 + x 对应 110
11 xor 110 = 101
结果是L + R = x^2 + 1
多项式乘法,假设被乘数为L,乘数为R
R每位是1的位按照从最右边开始,最低位是0,的索引是R(i)
结果是所有L 左移(shl) R(i) 位,然后加在一起(异或加法)
比如
L = x + 1 对应 11
R = x^2 + x 对应 110, 位索引是 1 2
11 shl 1 = 110
11 shl 2 = 1100
110 xor 1100 = 1010
结果是L * R = x^3 + x
多项式除法,假设被除数为L,除数为R
0、置D = 0
1、首先,判定是否L最高位索引x大于等于R最高位索引y
如果是继续2,否则5
2、执行一般减法z = x - y, D = D xor (1 shl z)
3、R左移z位,执行异或减法(就是加法)L = L xor (R shl z)
4、 跳到1
5、输出D作为商,L作为余数
比如L = x^2 + x + 1 对应111
R = x + 1 对应11
0、 D = 0
1、L: x = 2, R: y = 1, x > y
2、z = x - y = 1, D = 0 xor (1 shl 1)= 10
3、L = L xor (R shl 1) = 111 xor 110 = 1
1、L: x = 0, R: y = 1, x < y
5、输出D = 10, L = 1
即商为x, 余数为1
现在问题是如何更有效的计算乘除法,是否有能接近汇编的效率的算法?
每个多项式,按照多项式每项的幂对应2进制的幂,一一对应加起来
可以对应到一个二进制整数
多项式加减法,可以理解为两个对应二进制整数按位 异或(xor)
可以理解的是,两个多项式加法与减法结果是一样的
(L + R = L + 2R - R = L - R, 根据定义, 2R mod 2 = 0)
比如
L = x + 1 对应 11
R = x^2 + x 对应 110
11 xor 110 = 101
结果是L + R = x^2 + 1
多项式乘法,假设被乘数为L,乘数为R
R每位是1的位按照从最右边开始,最低位是0,的索引是R(i)
结果是所有L 左移(shl) R(i) 位,然后加在一起(异或加法)
比如
L = x + 1 对应 11
R = x^2 + x 对应 110, 位索引是 1 2
11 shl 1 = 110
11 shl 2 = 1100
110 xor 1100 = 1010
结果是L * R = x^3 + x
多项式除法,假设被除数为L,除数为R
0、置D = 0
1、首先,判定是否L最高位索引x大于等于R最高位索引y
如果是继续2,否则5
2、执行一般减法z = x - y, D = D xor (1 shl z)
3、R左移z位,执行异或减法(就是加法)L = L xor (R shl z)
4、 跳到1
5、输出D作为商,L作为余数
比如L = x^2 + x + 1 对应111
R = x + 1 对应11
0、 D = 0
1、L: x = 2, R: y = 1, x > y
2、z = x - y = 1, D = 0 xor (1 shl 1)= 10
3、L = L xor (R shl 1) = 111 xor 110 = 1
1、L: x = 0, R: y = 1, x < y
5、输出D = 10, L = 1
即商为x, 余数为1
现在问题是如何更有效的计算乘除法,是否有能接近汇编的效率的算法?