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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...