标签: uint64

c ++ string(int)+ string(int)

我有两个字符串,都只包含数字.这些数字大于最大值uint64_t.

我怎样才能添加这两个数字,然后将结果转换为字符串?

c++ string add uint64

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

无符号长整型数组的sse和

基于SSE浮点向量的减少,我试图对无符号长数组求和,但是很不幸,没有成功。

uint64_t vsum_uint64 (uint64_t *a, int n)
{
    uint64_t sum;    // lets say sum fits
    __m128 vsum = _mm_set1_ps(0);

    for (int i = 0; i < n; i += 2) {    // 2 unit64 in single __m128
        __m128 v = _mm_loadl_epi64(&a[i]);
        vsum = _mm_add_epi64(vsum, v);
    }

    _mm_store_ss(&sum, vsum);
    uint64_t *p = &vsum;
    sum+=*(p+1);

    // vsum = _mm_hadd_ps(vsum, vsum);
    // vsum = _mm_hadd_ps(vsum, vsum);
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

这应该是正确的,但是gcc仍然无法编译它。我搜索了答案,但没有找到答案。

这就是gcc所说的:

main.cpp: In function ‘uint64_t vsum_uint64(const uint64_t*, int)’:
main.cpp:73:35: …
Run Code Online (Sandbox Code Playgroud)

c++ sse sum simd uint64

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

在 C# 中将十进制转换为无符号十进制(或字符串?)

我有一个变量 ,DifferenceAmt它是一个小数。它可以是负数,也可以是正数。我需要将 的值DifferenceAmt作为字符串输出,但如果它是负数,则不带负号。我知道如何通过首先检查是否DifferenceAmt小于零来删除负号,然后如果是,则从第二个字符执行子字符串,但这似乎很麻烦。我先尝试转换DifferenceAmt为 UInt64,

UInt64 differenceamt = (UInt64)DifferenceAmt;
Run Code Online (Sandbox Code Playgroud)

但我不断收到一条错误消息,指出该数字对于 UInt64 来说太大(例如,即使它是 -10)。我怎样才能做到这一点?

c# decimal type-conversion uint64

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

从 uint64_t 转换为 double 会导致值不正确

当从大的uint64_t值转换为double时。结果并不如预期。这是为什么,有办法解决吗。我正在使用 gcc 8.3.0

int main
{
   uint64_t var64 = 844421103279395000;

   printf("var64     = %llu\n", var64 );

   double varDouble = (double)var64;

   printf("varDouble = %lf\n", varDouble );

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出如下:

var64     = 844421103279395000
varDouble = 844421103279394940.000000
Run Code Online (Sandbox Code Playgroud)

c double casting type-conversion uint64

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

在C++ 11中打印std :: bitset

考虑以下用C++ 11编写的代码:

#include <iostream>
#include <bitset>
#include <cstdint>

int main() {

    std::uint64_t a = 0000000000000000000000000000000000000000000000001111111100000000;
    std::bitset<64> b(a);

    std::cout << b << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码的输出是:

0000000000000000001001001001001001001001000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

为什么此输出与a值不对应?

c++ bitset uint64 c++11

0
推荐指数
1
解决办法
1924
查看次数

C++ uint64_t按位并检查偶数

我有以下代码,只是检查uint64_t是否是偶数,我打算使用按位AND操作来检查,但它似乎没有工作.

这是我认为首先工作的代码:

int n;
scanf("%d",&n);
for(int i = 0; i < n; i++){
    uint64_t s,d;
    scanf("%llu %llu",&s,&d);
    //try for x
    uint64_t x;
    bool stop = false;
    x = s + d;
    printf("%llu",x&1ULL); \\ This prints 0 when the number is even but
    if(x&1ULL==0ULL){ \\ This check always returns false
        printf("%llu",x);
        x/= 2;
Run Code Online (Sandbox Code Playgroud)

如果数字是奇数或偶数,则此代码始终打印输出0或1,但if语句始终返回false.我究竟做错了什么?谢谢

c bit-manipulation bitwise-operators uint64 bitwise-and

0
推荐指数
1
解决办法
356
查看次数

如何在数组中使用 &lt;uint64_t&gt;

我对 C++ 很陌生,我正在尝试创建一个数组,其中每个元素都有特定的位大小。我尝试过这样做:\nSequence<uint64_t>; \n其中 Sequence 是数组名称,每个元素的大小为 64 位。但是出现以下错误:“错误:\xe2\x80\x98Sequence\xe2\x80\x99 未命名类型”\n提前致谢!

\n

c++ uint64

0
推荐指数
1
解决办法
422
查看次数

是否可以在 GPU 上生成 uint64_t 随机数?

我正在尝试将有限域 CPU 代码移植到 GPU 上,在此过程中,我想生成随机向量来测试函数的速度。

我需要两个随机向量uint64_t(以及相应的两个 double 向量,具有有限域元素的浮点表示),每个向量的大小为 N。 据我所知,uint64_t 类型在 GPU 上不受本机支持,并且使用两个 32- 进行模拟位寄存器。

这些向量将包含 (0, p-1) 范围内的整数,其中 p 是素数,例如 (1<<25) - 39。(这个素数使用 25 位,但我仍然需要 64 位,来存储中间结果在剩余之前)。

我试图理解 Curand API 并用它生成随机向量。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <cuda.h>
#include <time.h>
#include <curand.h>

int main() {
  uint64_t p = (1 << 25) - 39;
  const uint32_t N = (1 << 27);
  uint64_t *au;
  double *ad;
  cudaError_t handle;

  handle = cudaMallocManaged(&au, N*sizeof(uint64_t));
  handle = cudaMallocManaged(&ad, N*sizeof(double));

  curandGenerator_t gen_type; …
Run Code Online (Sandbox Code Playgroud)

random cuda gpgpu uint64 curand

0
推荐指数
1
解决办法
401
查看次数

为什么在Linux上uint64_t定义为unsigned long int,而在Windows上它是unsigned long long int?

我需要使用uint64_tasunsigned long long int因为我需要适应比unsigned long它更大的数字?(两个操作系统都是 64 位),我该如何解决这个问题?这是实现二进制除法的代码: 这是我尝试打印以查看最终函数结果的函数:

void binary_div(s21_big_decimal *value_1, s21_big_decimal value_2, s21_big_decimal *result) {
  init_s21_decimal(result);
  s21_big_decimal Q;
  s21_big_decimal R;
  int scaleDiv = -1;
  do {
    init_s21_decimal(&R);
    init_s21_decimal(&Q);
    scaleDiv++;
    int lastBit = (SIZE_BIG_DECIMAL - 1) * 32 - 1;
    int currentBit = get_bit_big(*value_1, lastBit);
    while (currentBit == 0 && lastBit >= 0) {
      currentBit = get_bit_big(*value_1, lastBit);
      if (currentBit == 0) lastBit--;
    }
    for (int i = lastBit; i >= 0; i--) { …
Run Code Online (Sandbox Code Playgroud)

c linux uint64

0
推荐指数
1
解决办法
126
查看次数

Decimal.ToUInt64“对于 UInt64 来说值太大或太小

我在做: -

Decimal production = 0;
Decimal expense = 5000;

Decimal.ToUInt64(production - expense);
Run Code Online (Sandbox Code Playgroud)

但它会引发异常并显示以下错误消息。

"Value was either too large or too small for a UInt64"

有人可以给我一个解决方法吗?

谢谢!

编辑

无论如何,我希望结果为正数。

c# decimal type-conversion uint64

-1
推荐指数
1
解决办法
8179
查看次数

为什么uint64_t无法正常显示pow(2,64) - 1?

我试图理解为什么uint64_t类型无法正常显示pow(2,64)-1 .cplusplus标准是199711L.

我检查了pow()C++ 98标准下的函数

double pow (double base     , double exponent);
float pow (float base      , float exponent);
long double pow (long double base, long double exponent);
double pow (double base     , int exponent);
long double pow (long double base, int exponent);
Run Code Online (Sandbox Code Playgroud)

所以我写了下面的代码片段

double max1 = (pow(2, 64) - 1);
cout << max1 << endl;

uint64_t max2 = (pow(2, 64) - 1);
cout << max2 << endl;

uint64_t max3 = -1;
cout << max3 << …
Run Code Online (Sandbox Code Playgroud)

c++ floating-point double uint64

-1
推荐指数
1
解决办法
186
查看次数

strconv.ParseInt:解析“18446744073709551615”:值超出范围

用 解析 uint64 最大值时这是正常行为strconv.ParseInt吗?

i, err := strconv.ParseInt("18446744073709551615", 10, 64)
fmt.Println(i, err)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:"strconv.ParseInt: parsing "18446744073709551615": value out of range"当 uint64 的最大允许值为:18446744073709551615

你能解释这种行为吗?

https://golang.org/src/builtin/builtin.go?s=1026:1044#L26

go uint64

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