为了账号安全,请及时绑定邮箱和手机立即绑定

不能通过携带来传播价值

不能通过携带来传播价值

梵蒂冈之花 2019-09-06 16:40:35
制作一个小的C ++大型精度类,一切似乎工作得体,但添加,如果我一起添加0xffffffff和0x04我得到0xffff0003当我应该得到0x0100000003。这是问题的功能:mpfl operator+(const mpfl &lhs, const mpfl &rhs){    unsigned long i;    mpfl ret(0);    mpfl trhs(rhs);    for (i = lhs.nbytes; i >= 0; i--)    {        if (            (unsigned short)lhs.data[i].data + (unsigned short)trhs.data[i].data            > (unsigned short)255        ) {            if (i > 0)            {                ret.data[i].carry = 1;                ret.data[0].carry = 0;            }            else            {                ret.data[0].carry = 1;            }        }        else            ret.data[i].carry = 0;        ret.data[i].data = lhs.data[i].data + trhs.data[i].data;        if (i < lhs.nbytes)        {            if (ret.data[i].data == 255 && ret.data[i + 1].carry == 1)                increment(&trhs, i + 1);            ret.data[i].data += ret.data[i + 1].carry;        }        if (i == 0) break;    }    return ret;}这里是完整源代码的链接(github使这更容易,因为它有很多)标题:https://github.com/phyrrus9/mpfl/blob/master/mpfl.hclass:https://github.com/phyrrus9/mpfl/blob/master/mpfl.cpp驱动程序:https://github.com/phyrrus9/mpfl/blob/master/main.cpp
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

对于更大的整数只需将31位移位更改为(n-1),其中n是使用数据类型的位数,并且对于inc更改最大值...(抱歉,我认为这很明显)

查看完整回答
反对 回复 2019-09-06
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

我会做cy测定addadc更像是一个中subsbccy = c < b ? 1 : 0cy = (cy ? c<=b : c < b) ? 1 : 0

查看完整回答
反对 回复 2019-09-06
  • 3 回答
  • 0 关注
  • 667 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信