我要做一个幂运算,大家知道,幂运算很容易导致溢出,如41的70次幂早就超过__int64的存储范围了,所以要自己设计一个数据类型,可以存储任意大的整数。该怎么设计?
我本来想这样设计:
struct SUPERData
{
   __int64 i64low;//存储低位
   __int64 i64high;//存放高位
}
没有溢出的话,就存放在i64low里;若一有溢出,i64high就增1,
可是怎么知道i64low溢出了呢??
并且,我若正确设计出了这个数据类型,我有怎样用它来做一些其他的运算呢??比如求余。

解决方案 »

  1.   

    yinqv(yinqv)兄:我这几天给__int64 折磨的头痛,MSDN中讲的太少,能不能给小弟讲讲__int64 在机器内部怎么个存储法?
      

  2.   

    用什么int_64,
    直接用数组了,容易理解的是,a(1) as byte 
    一个元素放一位。
    想想别人怎么求10000!的,
      

  3.   

    用一个 int 数组,每个 int 存放 16 bit。
    由于 int 是 32 bit,做乘法时每两个 int 的积不会超过 2^31,然后进位就可以了四则运算,加 减 乘 都可以用简单的算术方法(逐项相乘,再进位),除用减法实现