相关疑难解决方法(0)

gcc是否支持amd64上的128位int?

gcc是否支持amd64上的128位int?

如何定义?

如何使用scanf/printf进行读/写?

c gcc 128-bit extended-precision

23
推荐指数
2
解决办法
1万
查看次数

有没有办法让这个功能更快?(C)

我在 C 中有一个代码,它以与人类相同的方式进行加法,因此,例如,如果我有两个数组A[0..n-1]and B[0..n-1],则该方法将执行C[0]=A[0]+B[0]C[1]=A[1]+B[1]...

我需要帮助使这个函数更快,即使解决方案使用的是内在函数。

我的主要问题是我有一个非常大的依赖问题,因为迭代i+1取决于迭代的进位i,只要我使用基数 10。所以如果A[0]=6B[0]=5C[0]必须是1并且我有1下一个加法的进位。

我能做的更快的代码是这样的:

void LongNumAddition1(unsigned char *Vin1, unsigned char *Vin2,
                      unsigned char *Vout, unsigned N) {
    for (int i = 0; i < N; i++) {
        Vout[i] = Vin1[i] + Vin2[i];
    } 

    unsigned char carry = 0;

    for (int i = 0; i < N; i++) {
        Vout[i] += carry;
        carry = Vout[i] / …
Run Code Online (Sandbox Code Playgroud)

c arrays optimization performance add

8
推荐指数
1
解决办法
394
查看次数

如何用2 ^ 32表示基数?

如果我有一个基数10或基数16,我该如何将其更改为2 ^ 32?

我试图这样做的原因是为了实现其他成员在这里建议的BigInt .. 为什么要使用更高的基数来实现BigInt?

它是否与整数(基数10)相同,直到2 ^ 32?它之后会发生什么?

c c++ numbers

7
推荐指数
2
解决办法
1732
查看次数

这种计算大数的方式如何工作?

通常,要处理超出C++中long long范围的整数,您必须将它们表示为字符串并以这种方式对它们执行操作.但是,我在互联网上发现这个代码似乎像魔术一样.它计算两个幂的总和(没有2 ^ 0),即使它不能存储在很长的长度中.

#include <iostream>  
#include <cmath>  
#include <iomanip>  
#include <sstream>  
using namespace std;

int main() {
    int n;
    stringstream ss;
    cin >> n;

    ss << fixed << setprecision(0) << pow(2, n + 1) - 2;

    if (n >= 54) {
        string a = ss.str();

        a[a.size() - 1] = ((a[a.size() - 1] - 48) - 2) + 48;

        cout << a;
        return 0;
    }

    cout << ss.str();

}
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?它适用于涉及大量的任何操作吗?如果n的值非常大(我试过1024)它只打印"inf".可以这种方式计算的数字范围的上限是多少?

以下部分到底做了什么以及它为什么这样做?

a[a.size() - 1] = ((a[a.size() - 1] - 48) …
Run Code Online (Sandbox Code Playgroud)

c++ largenumber stringstream

4
推荐指数
1
解决办法
144
查看次数