gpt4 book ai didi

C中的自定义数据类型

转载 作者:太空狗 更新时间:2023-10-29 17:11:23 25 4
gpt4 key购买 nike

我正在使用密码学,需要使用一些非常大的数字。我还使用了新的 Intel 无进位乘法指令,它需要 m128i 数据类型,这是通过加载一个函数来完成的,该函数将 float 据作为参数。

我需要存储 2^1223 整数,然后对其进行平方并存储该值。

我知道我可以使用 GMP 库,但我认为创建两种存储值(如 2^1224 和 2^2448)的数据类型会更快。它的开销会更少。我将使用 karatsuba 来乘以数字,因此我需要对数据类型执行的唯一操作是加法,因为我将分解数字以适应 m128i。

有人可以指导我找到可以帮助我创建所需整数大小的 Material 。

最佳答案

如果您需要自己的数据类型(无论它是否用于数学等),您将需要回退到结构和函数。例如:

struct bignum_s {
char bignum_data[1024];
}

(显然你想获得正确的大小,这只是一个例子)

大多数人最终也对它进行了类型定义:

typedef struct bignum_s bignum;

然后创建函数,使用两个(或其他)指向数字的指针来执行您想要的操作:

/* takes two bignums and ORs them together, putting the result back into a */
void
bignum_or(bignum *a, bignum *b) {
int i;
for(i = 0; i < sizeof(a->bignum_data); i++) {
a->bignum_data[i] |= b->bignum_data[i];
}
}

您确实希望最终定义几乎所有可能需要的函数,这通常包括内存分配函数 (bignum_new)、内存释放函数 (bignum_free) 和 init例程 (bignum_init)。即使您现在不需要它们,提前完成也会让您为以后需要增长和开发代码做好准备。

关于C中的自定义数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9654620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com