相关疑难解决方法(0)

用C++表示128位数字

在C++中表示128位数的最佳方法是什么?它应该尽可能地与内置数值类型一致(即支持所有算术运算符等).

我正在考虑构建一个具有2个64位或4个32位数的类.或者可能只是创建一个128位的内存块并自己完成所有操作.

是否有一些更容易/更标准的方式,或者我自己实施它时不太可能搞砸的东西?:)

如果它可以扩展到256位,512位等等也会很好...

c++ math

55
推荐指数
6
解决办法
7万
查看次数

如何使用gcc打印__uint128_t数字?

PRIu128,其行为类似于PRIu64来自<inttypes.h>:

printf("%" PRIu64 "\n", some_uint64_value);
Run Code Online (Sandbox Code Playgroud)

或者手动逐位转换:

int print_uint128(uint128_t n) {
  if (n == 0)  return printf("0\n");

  char str[40] = {0}; // log10(1 << 128) + '\0'
  char *s = str + sizeof(str) - 1; // start at the end
  while (n != 0) {
    if (s == str) return -1; // never happens

    *--s = "0123456789"[n % 10]; // save last digit
    n /= 10;                     // drop it
  }
  return printf("%s\n", s);
}
Run Code Online (Sandbox Code Playgroud)

是唯一的选择吗? …

c gcc

45
推荐指数
3
解决办法
5万
查看次数

gcc中有128位整数吗?

我想要一个128位整数,因为我想存储两个64位数的乘法结果.在gcc 4.4及以上版本中有没有这样的东西?

c gcc x86-64 bigint 128-bit

39
推荐指数
3
解决办法
6万
查看次数

什么gcc版本支持__int128内在类型?

gcc docs下,128位整数是:

作为扩展,整数标量类型__int128支持具有足够容纳128位的整数模式的目标.只需写入__int128带符号的128位整数,或写入unsigned __int128无符号的128位整数.

GCC中不支持表示__int128长整数小于128位宽的目标的类型的整数常量.

我想知道什么gcc版本增加了对这种类型的支持,或者如果有,可以直接用来测试其存在的宏.

gcc

16
推荐指数
2
解决办法
3532
查看次数

如何知道是否定义了__uint128_t

我们可以使用预处理器来知道是否unsigned long long定义了:

#include <limits.h>

#ifndef ULLONG_MAX
typedef unsigned long t_mask; 
#else
typedef unsigned long long t_mask;
#endif
Run Code Online (Sandbox Code Playgroud)

但是如何知道如何__uint128_t定义?

c c-preprocessor 128-bit

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

Windows上有c的128位整数?

Windows上是否有任何c编译器本身可以使用128位整数?例如,您可以在linux上使用gcc,使用__uint128_t ...在Windows上有任何其他机会吗?(如果128位计算机也能在32位计算机上运行,​​那就太好了!:D)

马特奥

c windows gcc integer 128-bit

7
推荐指数
1
解决办法
3681
查看次数

为什么要使用更高的基数来实现BigInt?

我正在尝试实现BigInt并阅读了一些关于它的线程和文章,其中大多数建议使用更高的基数(256或2 ^ 32甚至2 ^ 64).

为什么更高的基数有利于此目的?

我有的其他问题是我应该如何将字符串转换为更高的基数(> 16).我读过没有标准的方法,除了base64.最后一个问题,我如何使用这些更高的基础.一些例子会很棒.

c c++ biginteger

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

标签 统计

c ×5

gcc ×4

128-bit ×3

c++ ×2

bigint ×1

biginteger ×1

c-preprocessor ×1

integer ×1

math ×1

windows ×1

x86-64 ×1