7-5-3进制数跟10进制数的转换
0-0-0表示0
1-1-1表示1
2-2-2表示2
3-3-0表示3
4-4-1表示4
5-0-2表示5
以此类推
6-4-2表示104
10进制数转换为7-5-3进制数很容易,求余即可。反过来,7-5-3进制数转换为十进制数可用中国剩余定理算a-b-c to (a*15 + b*21 + c*70) mod 105.
显而易见,7-5-3进制数的加法:
a-b-c + x-y-z = (a+x)-(b+y)-(c+z),只需要对每位计算一次,完全不需要考虑进位。当然这个并不是大问题,计算机算加法也是可以同时并行计算每一位,并不是手算那种需要考虑进位的依赖。
有意思的是乘法:
a-b-c * x-y-z = (a*x) mod 7-(b*y) mod 5-(c*z) mod 3
n位的乘法只需要O(n),而非小学学的O(n^2),也比基于FFT的O(n*log n* log log n)快
我认为其中最大的优点是可并行计算,只要计算单元够多,一步就能计算出乘法结果而没有进位的依赖.
再补充一下:如果只计算一次乘法,这个办法并没有优势,用中国剩余定理转换为原10进制数仍然需要做一次很大的乘加。如果需要做很多次乘法,可以在多进制下计算出结果,再进行一次乘加转换回10进制.当然,如果不需要转换回10进制就没有这个限制