- 主题:两个大整数相乘,超出32位整数最大值了怎么办?
两个int相乘,中间结果在内存里是int 还是long int?
如果是int,那么中间结果就已经错了。
--
FROM 111.201.208.*
用long long,或者int64
没有中间结果,因为没超出机器字长的,都是单条指令就搞定了,
比如x86的就是一条mul或者imul指令,结果放在edx:eax,或者rdx:rax中。
edx(rdx)中存放的高位会被抛弃,当然,你也可以认为这是中间结果。
【 在 cleaf (Sep|Apr) 的大作中提到: 】
: 两个int相乘,中间结果在内存里是int 还是long int?
:
: 如果是int,那么中间结果就已经错了。
:
--
修改:z16166 FROM 221.218.162.*
FROM 221.218.162.*
建个struct,自己写大整数乘法
【 在 cleaf 的大作中提到: 】
: 两个int相乘,中间结果在内存里是int 还是long int?
: 如果是int,那么中间结果就已经错了。
:
--
FROM 122.224.174.*
如果非常大可以考虑用libgmp
【 在 cleaf 的大作中提到: 】
: 两个int相乘,中间结果在内存里是int 还是long int?
:
: 如果是int,那么中间结果就已经错了。
: --
:
发自「今日水木 on HMA-AL00」
--
FROM 223.104.42.*