首页 > 解决方案 > 如何用 C++ 计算 2 ** 128?

问题描述

我正在尝试用 c++ 计算 2 ** 128,但它溢出了,我得到的值为 0。关于如何计算这个的任何想法?我还需要在终端上获取它,但 iostream 和 stdio.h 不支持我尝试过的名为 __int128 的。

#include <cstring>

int main(){
      unsigned __int128 a = 2;
      for(int i; i < 129; i++){
            a = a * 2;
      }
      std::cout <<  a << std::endl;
}

或者

#include <iostream>
#include <cstring>

int main(){
      long long unsigned int a = 2;
      for(int i; i < 129; i++){
            a = a * 2;
      }
      std::cout <<  a << std::endl;
}

是我尝试过的代码。

标签: c++integernumbers

解决方案


您没有为 i 赋值。

程序的输出将非常大,所以你需要做的是;您可以直接在 std::cout 上设置精度并使用 std::fixed 格式说明符。

int main() {
    
    double a = 2;
      for(int i=0; i < 129; i++){
            a = a * 2;
      }
      cout.precision(200);
      std::cout <<  a << std::endl;
    return 0;
}

推荐阅读