簡體   English   中英

如何用 c++ 計算 2 ** 128?

[英]how to calculate 2 ** 128 with c++?

我正在嘗試用 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;
}

是我嘗試過的代碼。

您沒有為 i 賦值。

程序的 output 將是非常大的數字,所以您需要做的是; 您可以直接在 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;
}

對於計算大數,建議使用Boost 多精度

#include <boost/multiprecision/cpp_int.hpp>
using boost::multiprecision::cpp_int;
using boost::multiprecision::pow;

int main() {
    cpp_int num = boost::multiprecision::pow(cpp_int(2),100);
    std::cout << "This is a big number: " << num <<std::endl;
}

它將打印:

This is a big number: 1267650600228229401496703205376

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM