- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2011-11-12 20:07 编辑
我觉得这个论题很搞笑,
C有C的用途,汇编有汇编的用途,
用A的长处,无法证明用B的人要不要用A。
正如 ...
AD8018 发表于 2011-11-12 19:39
只不过是说,有时汇编会有用,会一点汇编没坏处。
双字乘除法不是那个意思。
你以64bit对象做的也是单字乘除法。真正机器指令的双字乘除法,指:
两个机器字相乘会出现双倍长度的数字,比方:在32bit上,
unsigned int a=0X80000000;b=0X80000000,c=a*b?
c就应该是一个64bit的数字。
你举的例子,应该解这个问题:
unsigned long long a=0X8000000000000000;
unsigned long long b=0X8000000000000000;
unsigned long long long c=a*b;//没这个类型吧?,那么
unsigned long long c[2];
unsigned long long q,r;
q=diva64(c,b,&r); //结果:q=b,r=0;
mula64(a,b,c);//就是这个,用什么算法效率较高?
不管你的数字多长,乘积和被除数一定是双倍长。这是组装大数运算的必要条件。
现在的大数运算,可以基于bit、BYTE、short、int32_t。但不能int64_t。
如果必须,可以asm。 |
|