打印

数据溢出和越界的问题

[复制链接]
1097|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wollychan|  楼主 | 2015-3-10 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我所写的程序里,需要处理一个 乘法,其计算结果有可能超过 4个字节的限制。比如 99999999 * 9999 之类的。

这两个数的乘法的结果是 999899990001 即 0x E8 CEAF 07F1, 共 5 个字节。这个数, unsigned long 也是装不下的。

本打算,用两个 unsigned long 来装这个数,低4字节一个数,高4字节 向右移 32位,再装到另一个数里。

结果发现,上面这个数 不管怎么移位,最高字节 0xe8,都移不出来。

哪位高手处理类似的情况,指点一二,谢谢。
沙发
popeye021| | 2015-3-10 16:03 | 只看该作者
百度“大数乘法”

使用特权

评论回复
板凳
wollychan|  楼主 | 2015-3-11 08:55 | 只看该作者
popeye021 发表于 2015-3-10 16:03
百度“大数乘法”

多谢,我先去研究一下。

使用特权

评论回复
地板
JY-DX-JY| | 2015-3-11 11:06 | 只看该作者
用long long int型数据。

使用特权

评论回复
5
wollychan|  楼主 | 2015-3-18 09:51 | 只看该作者
JY-DX-JY 发表于 2015-3-11 11:06
用long long int型数据。

Keil 不支持 long long 型的数据声明。

使用特权

评论回复
6
戈卫东| | 2015-3-25 13:46 | 只看该作者
很麻烦的。
可能需要一个一个BIT进行处理,也许可以4个BIT4个BIT地进行处理——可以实现任意长。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

13

帖子

0

粉丝