微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C左移大值

我想知道如何在C中改变左边的值.
例如:

1 << 180

我认为结果应该是:

1532495540865888858358347027150309183618739122183602176

(在python [1< <180]中测试);

解决方法

Python支持任意精度算术,C不支持.

而且,根据Standard [expr.shift]:

The behavior is undefined if the right operand is negative,or greater
than or equal to the length in bits of the promoted left operand.

为了在C中使用大整数,您可以使用Boost库,它使用长算术实现为不同的库提供包装:

#include <boost/multiprecision/gmp.hpp>
#include <iostream>

int main()
{
    boost::multiprecision::mpz_int one(1);
    std::cout << (one << 180) << std::endl;
    return 0;
}

打印

1532495540865888858358347027150309183618739122183602176

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐