不管怎么移位,最高字节 0xe8,都移不出来

[复制链接]
714|7
 楼主| llia 发表于 2018-5-17 16:59 | 显示全部楼层 |阅读模式

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

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

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

结果发现,上面这个数 不管怎么移位,最高字节 0xe8,都移不出来。
zhanglli 发表于 2018-5-17 17:02 | 显示全部楼层
百度“大数乘法”
 楼主| llia 发表于 2018-5-17 17:04 | 显示全部楼层
多谢,我先去研究一下。
wangpe 发表于 2018-5-17 17:06 | 显示全部楼层
用long long int型数据。
 楼主| llia 发表于 2018-5-17 17:08 | 显示全部楼层
Keil 不支持 long long 型的数据声明。
langgq 发表于 2018-5-17 17:11 | 显示全部楼层

很麻烦的。
可能需要一个一个BIT进行处理,也许可以4个BIT4个BIT地进行处理——可以实现任意长。
 楼主| llia 发表于 2018-5-17 17:13 | 显示全部楼层

哦,那我就知道怎么回事了,多谢大家,结贴了哈
ayb_ice 发表于 2018-5-21 08:39 | 显示全部楼层
这时要考虑用浮点数了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

961

主题

8893

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部